Commit 33b8960d authored by Steve Holme's avatar Steve Holme
Browse files

tool: Fixed incorrect return code if password prompting runs out of memory

Due to the changes in commit 3c929ff9 and lack of subsequent
updates, curl could return a CURLE_FTP_ACCEPT_FAILED error if
checkpasswd() ran out of memory in versions 7.33.0 and 7.34.0.

Updated the function declaration and return code to return
CURLE_OUT_OF_MEMORY and CURLE_OK where appropriate.
parent de966b40
Loading
Loading
Loading
Loading
+7 −6
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
@@ -365,14 +365,14 @@ ParameterError str2offset(curl_off_t *val, const char *str)
  return PARAM_BAD_NUMERIC;
}

ParameterError checkpasswd(const char *kind, /* for what purpose */
CURLcode checkpasswd(const char *kind, /* for what purpose */
                     char **userpwd)   /* pointer to allocated string */
{
  char *psep;
  char *osep;

  if(!*userpwd)
    return PARAM_OK;
    return CURLE_OK;

  /* Attempt to find the password separator */
  psep = strchr(*userpwd, ':');
@@ -408,14 +408,15 @@ ParameterError checkpasswd(const char *kind, /* for what purpose */
                      passwdlen + 1 + /* an extra for the colon */
                      userlen + 1);   /* an extra for the zero */
    if(!passptr)
      return PARAM_NO_MEM;
      return CURLE_OUT_OF_MEMORY;

    /* append the password separated with a colon */
    passptr[userlen] = ':';
    memcpy(&passptr[userlen+1], passwd, passwdlen+1);
    *userpwd = passptr;
  }
  return PARAM_OK;

  return CURLE_OK;
}

ParameterError add2list(struct curl_slist **list, const char *ptr)
+2 −2
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, 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
@@ -40,7 +40,7 @@ long proto2num(struct Configurable *config, long *val, const char *str);

ParameterError str2offset(curl_off_t *val, const char *str);

ParameterError checkpasswd(const char *kind, char **userpwd);
CURLcode checkpasswd(const char *kind, char **userpwd);

ParameterError add2list(struct curl_slist **list, const char *ptr);