diff options
author | sobomax <sobomax@FreeBSD.org> | 2004-04-30 00:20:58 +0000 |
---|---|---|
committer | sobomax <sobomax@FreeBSD.org> | 2004-04-30 00:20:58 +0000 |
commit | 1c5fa3c156e6f2c28b3577fcbd6a7c8fce933772 (patch) | |
tree | 47877f1b05e6df67d076af1963b411854d839b54 /usr.sbin/kldxref | |
parent | da3845c766a58878cbf05348e7a7cfc26b2fd4af (diff) | |
download | FreeBSD-src-1c5fa3c156e6f2c28b3577fcbd6a7c8fce933772.zip FreeBSD-src-1c5fa3c156e6f2c28b3577fcbd6a7c8fce933772.tar.gz |
Check that specified in the command line path is actually a directory,
otherwise we are risking to coredump later on.
Diffstat (limited to 'usr.sbin/kldxref')
-rw-r--r-- | usr.sbin/kldxref/kldxref.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/usr.sbin/kldxref/kldxref.c b/usr.sbin/kldxref/kldxref.c index 1a640ca..396cf93 100644 --- a/usr.sbin/kldxref/kldxref.c +++ b/usr.sbin/kldxref/kldxref.c @@ -32,6 +32,7 @@ * $FreeBSD$ */ +#include <sys/types.h> #include <sys/param.h> #include <sys/exec.h> #include <sys/queue.h> @@ -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); |