mirror of
https://github.com/moparisthebest/curl
synced 2024-11-11 20:15:03 -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:
parent
fddb7b44a7
commit
ca8f17a303
@ -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 */
|
||||||
|
Loading…
Reference in New Issue
Block a user