commit f280c171e261dfe6fe9f39f715b4a40254982d58
parent 2d0a7f2e8922fd47e0fe613ea08dcf1ce3840e73
Author: George Kadianakis <desnacked@riseup.net>
Date: Tue, 8 Dec 2020 16:54:18 +0200
Merge branch 'mr/233'
Diffstat:
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/changes/argument_parse b/changes/argument_parse
@@ -0,0 +1,5 @@
+ o Minor features (command-line interface):
+ - When parsing command-line flags that take an optional argument,
+ treat the argument as absent if it would start with a '-' character.
+ Arguments in that form are not intelligible for any of our
+ optional-argument flags. Closes ticket 40223.
diff --git a/src/app/config/config.c b/src/app/config/config.c
@@ -2601,8 +2601,11 @@ config_parse_commandline(int argc, char **argv, int ignore_errors)
parsed_cmdline_free(result);
return NULL;
}
- } else if (want_arg == ARGUMENT_OPTIONAL && is_last) {
+ } else if (want_arg == ARGUMENT_OPTIONAL &&
+ /* optional arguments may never start with '-'. */
+ (is_last || argv[i+1][0] == '-')) {
arg = tor_strdup("");
+ want_arg = ARGUMENT_NONE; // prevent skipping the next flag.
} else {
arg = (want_arg != ARGUMENT_NONE) ? tor_strdup(argv[i+1]) :
tor_strdup("");