summaryrefslogtreecommitdiffstats
path: root/usr.sbin/kldxref
diff options
context:
space:
mode:
authorsobomax <sobomax@FreeBSD.org>2004-04-30 00:20:58 +0000
committersobomax <sobomax@FreeBSD.org>2004-04-30 00:20:58 +0000
commit1c5fa3c156e6f2c28b3577fcbd6a7c8fce933772 (patch)
tree47877f1b05e6df67d076af1963b411854d839b54 /usr.sbin/kldxref
parentda3845c766a58878cbf05348e7a7cfc26b2fd4af (diff)
downloadFreeBSD-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.c9
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);
OpenPOWER on IntegriCloud