From: Vincent Bernat Date: Tue, 30 Sep 2014 19:32:44 +0000 (+0200) Subject: lldpd: abort when some options are repeated X-Git-Tag: 0.7.11~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9b11faad6fbb47e094969b9a8e26c196f09e4801;p=thirdparty%2Flldpd.git lldpd: abort when some options are repeated Some options don't have to be repeated. Later options would override earlier and this is usually an error. Better just abort in this case. --- diff --git a/NEWS b/NEWS index 88633e60..e8a9008b 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@ lldpd (0.7.11) * Features: + Ship bash and zsh completion. + + Abort when some command-line options are repeated. * Fix: + Handle correctly read failures in liblldpctl. diff --git a/src/daemon/lldpd.c b/src/daemon/lldpd.c index d4d83189..33a85a3e 100644 --- a/src/daemon/lldpd.c +++ b/src/daemon/lldpd.c @@ -1339,15 +1339,31 @@ lldpd_main(int argc, char *argv[], char *envp[]) receiveonly = 1; break; case 'm': + if (mgmtp) { + fprintf(stderr, "-m can only be used once\n"); + usage(); + } mgmtp = optarg; break; case 'u': + if (ctlname) { + fprintf(stderr, "-u can only be used once\n"); + usage(); + } ctlname = optarg; break; case 'I': + if (interfaces) { + fprintf(stderr, "-I can only be used once\n"); + usage(); + } interfaces = optarg; break; case 'C': + if (cidp) { + fprintf(stderr, "-C can only be used once\n"); + usage(); + } cidp = optarg; break; case 'L': @@ -1380,6 +1396,10 @@ lldpd_main(int argc, char *argv[], char *envp[]) snmp = 1; break; case 'X': + if (agentx) { + fprintf(stderr, "-X can only be used once\n"); + usage(); + } snmp = 1; agentx = optarg; break; @@ -1391,11 +1411,17 @@ lldpd_main(int argc, char *argv[], char *envp[]) #endif break; case 'S': - free(descr_override); + if (descr_override) { + fprintf(stderr, "-S can only be used once\n"); + usage(); + } descr_override = strdup(optarg); break; case 'P': - free(platform_override); + if (platform_override) { + fprintf(stderr, "-P can only be used once\n"); + usage(); + } platform_override = strdup(optarg); break; case 'H':