diff options
author | Daniel Stenberg <daniel@haxx.se> | 2020-09-18 08:09:09 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-09-18 14:47:23 +0200 |
commit | 5bd63e0619d10d81850a9993ac278396bb77e36c (patch) | |
tree | 3fe1e3986f8df5eb3f81b7d8225d86bffc2051f5 /src | |
parent | 2df7414a7390771316be4cc8822650470e7d7aa8 (diff) | |
download | curl-5bd63e0619d10d81850a9993ac278396bb77e36c.tar.gz |
--help: strdup the category
... since it is converted and the original pointer is freed on Windows
unicode handling.
Follow-up to aa8777f63febc
Fixes #5977
Closes #5978
Reported-by: xwxbug on github
Diffstat (limited to 'src')
-rw-r--r-- | src/tool_getparam.c | 6 | ||||
-rw-r--r-- | src/tool_help.c | 20 | ||||
-rw-r--r-- | src/tool_help.h | 2 |
3 files changed, 14 insertions, 14 deletions
diff --git a/src/tool_getparam.c b/src/tool_getparam.c index a884f4b38..7977c3dc6 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -1777,7 +1777,11 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */ case 'h': /* h for help */ if(toggle) { - global->help_category = nextarg; + if(nextarg) { + global->help_category = strdup(nextarg); + if(!global->help_category) + return PARAM_NO_MEM; + } return PARAM_HELP_REQUESTED; } /* we now actually support --no-help too! */ diff --git a/src/tool_help.c b/src/tool_help.c index 54a37e6b2..a67e4bc85 100644 --- a/src/tool_help.c +++ b/src/tool_help.c @@ -899,35 +899,31 @@ static void get_categories(void) } -void tool_help(const char *category) +void tool_help(char *category) { puts("Usage: curl [options...] <url>"); /* If no category was provided */ if(!category) { const char *category_note = "\nThis is not the full help, this " - "menu is stripped into categories.\nUse \"--help category\" to get " - "an overview of all categories.\nFor all options use the manual" - " or \"--help all\"."; + "menu is stripped into categories.\nUse \"--help category\" to get " + "an overview of all categories.\nFor all options use the manual" + " or \"--help all\"."; print_category(CURLHELP_IMPORTANT); puts(category_note); - return; } /* Lets print everything if "all" was provided */ - if(curl_strequal(category, "all")) { + else if(curl_strequal(category, "all")) /* Print everything except hidden */ print_category(~(CURLHELP_HIDDEN)); - return; - } /* Lets handle the string "category" differently to not print an errormsg */ - if(curl_strequal(category, "category")) { + else if(curl_strequal(category, "category")) get_categories(); - return; - } /* Otherwise print category and handle the case if the cat was not found */ - if(get_category_content(category)) { + else if(get_category_content(category)) { puts("Invalid category provided, here is a list of all categories:\n"); get_categories(); } + free(category); } static int diff --git a/src/tool_help.h b/src/tool_help.h index 536ac10f8..1da23cc54 100644 --- a/src/tool_help.h +++ b/src/tool_help.h @@ -23,7 +23,7 @@ ***************************************************************************/ #include "tool_setup.h" -void tool_help(const char *category); +void tool_help(char *category); void tool_list_engines(void); void tool_version_info(void); |