diff options
author | 2016-02-05 12:15:15 +0000 | |
---|---|---|
committer | 2016-02-05 12:15:15 +0000 | |
commit | 8f6b2993e29034d8ac84034c85be6d87d03f2990 (patch) | |
tree | 795f0a97a7660e24cf2841b8763b39ba6cb57506 | |
parent | Fix a possible use-after-free in vmd, forward the result to the (diff) | |
download | wireguard-openbsd-8f6b2993e29034d8ac84034c85be6d87d03f2990.tar.xz wireguard-openbsd-8f6b2993e29034d8ac84034c85be6d87d03f2990.zip |
Bail out if an unknown option is passed.
There is no reason for rtadvd to be different from other daemons.
Input from and ok bluhm@ florian@
-rw-r--r-- | usr.sbin/rtadvd/rtadvd.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/usr.sbin/rtadvd/rtadvd.c b/usr.sbin/rtadvd/rtadvd.c index b3b411057a4..5375c9b2416 100644 --- a/usr.sbin/rtadvd/rtadvd.c +++ b/usr.sbin/rtadvd/rtadvd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rtadvd.c,v 1.61 2015/12/01 12:11:31 jca Exp $ */ +/* $OpenBSD: rtadvd.c,v 1.62 2016/02/05 12:15:15 jca Exp $ */ /* $KAME: rtadvd.c,v 1.66 2002/05/29 14:18:36 itojun Exp $ */ /* @@ -130,7 +130,7 @@ u_int32_t ndopt_flags[] = { [ND_OPT_DNSSL] = NDOPT_FLAG_DNSSL, }; -int main(int, char *[]); +static __dead void usage(void); static void set_die(int); static void die(void); static void sock_open(void); @@ -162,9 +162,7 @@ main(int argc, char *argv[]) closefrom(3); /* get command line options and arguments */ -#define OPTIONS "c:ds" - while ((ch = getopt(argc, argv, OPTIONS)) != -1) { -#undef OPTIONS + while ((ch = getopt(argc, argv, "c:ds")) != -1) { switch (ch) { case 'c': conffile = optarg; @@ -175,16 +173,14 @@ main(int argc, char *argv[]) case 's': sflag = 1; break; + default: + usage(); } } argc -= optind; argv += optind; - if (argc == 0) { - fprintf(stderr, - "usage: rtadvd [-ds] [-c configfile] " - "interface ...\n"); - exit(1); - } + if (argc == 0) + usage(); SLIST_INIT(&ralist); @@ -278,6 +274,14 @@ main(int argc, char *argv[]) } static void +usage(void) +{ + fprintf(stderr, "usage: %s [-ds] [-c configfile] interface ...\n", + getprogname()); + exit(1); +} + +static void rtadvd_set_dump(int signo) { do_dump = 1; |