From 9b4bbbbccfec26bcfa38d80ba24dcb17ce5c59bc Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 23 Feb 2026 11:13:55 +0100 Subject: [PATCH] swanctl: Check for conflicts with shared options when registering commands Also suppress errors when pre-processing shared options (this was missing here but already used in pki). --- src/swanctl/command.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/swanctl/command.c b/src/swanctl/command.c index 35a226a74..dd662eef0 100644 --- a/src/swanctl/command.c +++ b/src/swanctl/command.c @@ -185,6 +185,8 @@ static bool process_common_opts(bool init) int prevoptind = optind; bool success = TRUE; + /* don't report any errors during this pre-processing */ + opterr = 0; while (TRUE) { switch (getopt_long(argc, argv, command_optstring, command_opts, NULL)) @@ -243,6 +245,16 @@ void command_register(command_t command) return; } } + for (i = 0; i < countof(shared_options); i++) + { + if (shared_options[i].op == command.op) + { + fprintf(stderr, "unable to register command --%s, short option " + "-%c conflicts with --%s\n", command.cmd, command.op, + shared_options[i].name); + return; + } + } cmds[registered] = command; /* append default options, but not to --help */