From: Mark Andrews Date: Wed, 23 Jan 2019 06:47:59 +0000 (+1100) Subject: error out if there are extra command line options X-Git-Tag: v9.12.4rc1~24^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=42458336e404a265da9e8172f589377ebeb97eff;p=thirdparty%2Fbind9.git error out if there are extra command line options (cherry picked from commit f73816ff0fda101ebe61213ed4352c1f245b3329) --- diff --git a/CHANGES b/CHANGES index b6f9c253410..ab758ad75e6 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +5157. [bug] Nslookup now errors out if there are extra command + line arguments. [GL #207] + 5154. [bug] dig: process_opt could be called twice on the same message leading to a assertion failure. [GL #860] diff --git a/bin/dig/nslookup.c b/bin/dig/nslookup.c index ae71d881ddc..b55854d3440 100644 --- a/bin/dig/nslookup.c +++ b/bin/dig/nslookup.c @@ -879,6 +879,23 @@ get_next_command(void) { isc_mem_free(mctx, buf); } +ISC_PLATFORM_NORETURN_PRE static void +usage(void) ISC_PLATFORM_NORETURN_POST; + +static void +usage(void) { + fprintf(stderr, "Usage:\n"); + fprintf(stderr, +" nslookup [-opt ...] # interactive mode using default server\n"); + fprintf(stderr, +" nslookup [-opt ...] - server # interactive mode using 'server'\n"); + fprintf(stderr, +" nslookup [-opt ...] host # just look up 'host' using default server\n"); + fprintf(stderr, +" nslookup [-opt ...] host server # just look up 'host' using 'server'\n"); + exit(1); +} + static void parse_args(int argc, char **argv) { bool have_lookup = false; @@ -900,6 +917,9 @@ parse_args(int argc, char **argv) { in_use = true; addlookup(argv[0]); } else { + if (argv[1] != NULL) { + usage(); + } set_nameserver(argv[0]); check_ra = false; }