From aba98991a50d7a4f2deb8fc3f9ddc5628a207da5 Mon Sep 17 00:00:00 2001 From: Steve Holme Date: Sun, 19 Jan 2014 12:20:01 +0000 Subject: [PATCH] tool: Fixed incorrect return code if command line parser runs out of memory In the rare instance where getparameter() may return PARAM_NO_MEM whilst parsing a URL, cURL would return this error code, which is equivalent to CURLE_FTP_ACCEPT_FAILED in cURL error codes terms. Instead, return CURLE_FAILED_INIT and output the failure reason as per the other usage of getparameter(). --- src/tool_operate.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/tool_operate.c b/src/tool_operate.c index 7cb807734..801e5d47b 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2013, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2014, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -286,12 +286,12 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) /* Parse options */ for(i = 1, stillflags = TRUE; i < argc; i++) { + char *orig_opt = argv[i]; + if(stillflags && ('-' == argv[i][0])) { char *nextarg; bool passarg; - char *orig_opt = argv[i]; - char *flag = argv[i]; if(curlx_strequal("--", argv[i])) @@ -302,18 +302,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) nextarg = (i < (argc-1)) ? argv[i+1] : NULL; res = getparameter(flag, nextarg, &passarg, config); - if(res) { - int retval = CURLE_OK; - if(res != PARAM_HELP_REQUESTED) { - const char *reason = param2text(res); - helpf(config->errors, "option %s: %s\n", orig_opt, reason); - retval = CURLE_FAILED_INIT; - } - res = retval; - goto quit_curl; - } - - if(passarg) /* we're supposed to skip this */ + if(!res && passarg) /* we're supposed to skip this */ i++; } } @@ -321,8 +310,17 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) bool used; /* just add the URL please */ res = getparameter((char *)"--url", argv[i], &used, config); - if(res) - goto quit_curl; + } + + if(res) { + int retval = CURLE_OK; + if(res != PARAM_HELP_REQUESTED) { + const char *reason = param2text(res); + helpf(config->errors, "option %s: %s\n", orig_opt, reason); + retval = CURLE_FAILED_INIT; + } + res = retval; + goto quit_curl; } }