Commit aba98991 authored by Steve Holme's avatar Steve Holme
Browse files

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().
parent db1beab1
Loading
Loading
Loading
Loading
+15 −17
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, 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,6 +302,16 @@ 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 && passarg) /* we're supposed to skip this */
          i++;
      }
    }
    else {
      bool used;
      /* just add the URL please */
      res = getparameter((char *)"--url", argv[i], &used, config);
    }

    if(res) {
      int retval = CURLE_OK;
      if(res != PARAM_HELP_REQUESTED) {
@@ -312,18 +322,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
      res = retval;
      goto quit_curl;
    }

        if(passarg) /* we're supposed to skip this */
          i++;
      }
    }
    else {
      bool used;
      /* just add the URL please */
      res = getparameter((char *)"--url", argv[i], &used, config);
      if(res)
        goto quit_curl;
    }
  }

  if(config->userpwd && !config->xoauth2_bearer) {