]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
swanctl: Check for conflicts with shared options when registering commands
authorTobias Brunner <tobias@strongswan.org>
Mon, 23 Feb 2026 10:13:55 +0000 (11:13 +0100)
committerTobias Brunner <tobias@strongswan.org>
Mon, 23 Feb 2026 10:24:56 +0000 (11:24 +0100)
Also suppress errors when pre-processing shared options (this was missing
here but already used in pki).

src/swanctl/command.c

index 35a226a7473efab5532c87879e3963a7ae66794e..dd662eef087bbf72c981a071f86a57510e471c85 100644 (file)
@@ -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 */