From 1c5fa3c156e6f2c28b3577fcbd6a7c8fce933772 Mon Sep 17 00:00:00 2001 From: sobomax Date: Fri, 30 Apr 2004 00:20:58 +0000 Subject: [PATCH] Check that specified in the command line path is actually a directory, otherwise we are risking to coredump later on. --- usr.sbin/kldxref/kldxref.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/usr.sbin/kldxref/kldxref.c b/usr.sbin/kldxref/kldxref.c index 1a640ca52446..396cf93df25f 100644 --- a/usr.sbin/kldxref/kldxref.c +++ b/usr.sbin/kldxref/kldxref.c @@ -32,6 +32,7 @@ * $FreeBSD$ */ +#include #include #include #include @@ -272,6 +273,7 @@ main(int argc, char *argv[]) FTS *ftsp; FTSENT *p; int opt, fts_options, ival; + struct stat sb; fts_options = FTS_PHYSICAL; /* SLIST_INIT(&kldlist);*/ @@ -300,6 +302,13 @@ main(int argc, char *argv[]) argc -= optind; argv += optind; + if (stat(argv[0], &sb) != 0) + err(1, "%s", argv[0]); + if ((sb.st_mode & S_IFDIR) == 0) { + errno = ENOTDIR; + err(1, "%s", argv[0]); + } + ftsp = fts_open(argv, fts_options, 0); if (ftsp == NULL) exit(1);