1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 16:18:48 -05:00

tool_paramhlp: Fixed options being included in username

Fix to prevent the options from being displayed when curl requests the
user's password if the following command line is specified:

--user username;options
This commit is contained in:
Steve Holme 2013-04-20 08:51:16 +01:00
parent fddb7b44a7
commit ca8f17a303

View File

@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___ * | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
* *
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
@ -322,13 +322,19 @@ ParameterError str2offset(curl_off_t *val, const char *str)
ParameterError checkpasswd(const char *kind, /* for what purpose */ ParameterError checkpasswd(const char *kind, /* for what purpose */
char **userpwd) /* pointer to allocated string */ char **userpwd) /* pointer to allocated string */
{ {
char *ptr; char *psep;
char *osep;
if(!*userpwd) if(!*userpwd)
return PARAM_OK; return PARAM_OK;
ptr = strchr(*userpwd, ':'); /* Attempt to find the password separator */
if(!ptr) { psep = strchr(*userpwd, ':');
/* Attempt to find the options separator */
osep = strchr(*userpwd, ';');
if(!psep && **userpwd != ';') {
/* no password present, prompt for one */ /* no password present, prompt for one */
char passwd[256] = ""; char passwd[256] = "";
char prompt[256]; char prompt[256];
@ -336,6 +342,9 @@ ParameterError checkpasswd(const char *kind, /* for what purpose */
size_t userlen = strlen(*userpwd); size_t userlen = strlen(*userpwd);
char *passptr; char *passptr;
if(osep)
*osep = '\0';
/* build a nice-looking prompt */ /* build a nice-looking prompt */
curlx_msnprintf(prompt, sizeof(prompt), curlx_msnprintf(prompt, sizeof(prompt),
"Enter %s password for user '%s':", "Enter %s password for user '%s':",
@ -345,6 +354,9 @@ ParameterError checkpasswd(const char *kind, /* for what purpose */
getpass_r(prompt, passwd, sizeof(passwd)); getpass_r(prompt, passwd, sizeof(passwd));
passwdlen = strlen(passwd); passwdlen = strlen(passwd);
if(osep)
*osep = ';';
/* extend the allocated memory area to fit the password too */ /* extend the allocated memory area to fit the password too */
passptr = realloc(*userpwd, passptr = realloc(*userpwd,
passwdlen + 1 + /* an extra for the colon */ passwdlen + 1 + /* an extra for the colon */