From 9b11faad6fbb47e094969b9a8e26c196f09e4801 Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Tue, 30 Sep 2014 21:32:44 +0200 Subject: [PATCH] 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. --- NEWS | 1 + src/daemon/lldpd.c | 30 ++++++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) 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': -- 2.39.5