From 33b8960dc88d8d0a5bfef92f891515b9a3b9727d Mon Sep 17 00:00:00 2001 From: Steve Holme Date: Sun, 19 Jan 2014 16:14:09 +0000 Subject: [PATCH] tool: Fixed incorrect return code if password prompting runs out of memory Due to the changes in commit 3c929ff9f6ea 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. --- src/tool_paramhlp.c | 13 +++++++------ src/tool_paramhlp.h | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/tool_paramhlp.c b/src/tool_paramhlp.c index 86b8a1df5..46e926952 100644 --- a/src/tool_paramhlp.c +++ b/src/tool_paramhlp.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 @@ -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 */ - char **userpwd) /* pointer to allocated string */ +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) diff --git a/src/tool_paramhlp.h b/src/tool_paramhlp.h index 24734a520..3722e9375 100644 --- a/src/tool_paramhlp.h +++ b/src/tool_paramhlp.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2012, 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 @@ -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);