mirror of
https://github.com/curl/curl.git
synced 2024-12-27 06:59:43 +08:00
setopt: remove check for 'option' that is always true
- make sure that passing in option set to NULL clears the fields
correctly
- remove the weird second take if Curl_parse_login_details() returns
error
Follow-up to 7333faf00b
Spotted by CodeSonar
Closes #13619
This commit is contained in:
parent
0c49ea4ff2
commit
a11774776f
25
lib/setopt.c
25
lib/setopt.c
@ -111,7 +111,6 @@ CURLcode Curl_setblobopt(struct curl_blob **blobp,
|
||||
|
||||
static CURLcode setstropt_userpwd(char *option, char **userp, char **passwdp)
|
||||
{
|
||||
CURLcode result = CURLE_OK;
|
||||
char *user = NULL;
|
||||
char *passwd = NULL;
|
||||
|
||||
@ -122,30 +121,22 @@ static CURLcode setstropt_userpwd(char *option, char **userp, char **passwdp)
|
||||
to clear the existing data */
|
||||
if(option) {
|
||||
size_t len = strlen(option);
|
||||
CURLcode result;
|
||||
if(len > CURL_MAX_INPUT_LENGTH)
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
|
||||
result = Curl_parse_login_details(option, len, &user, &passwd, NULL);
|
||||
if(result)
|
||||
return result;
|
||||
}
|
||||
|
||||
if(!result) {
|
||||
/* Store the username part */
|
||||
if(!user && option && option[0] == ':') {
|
||||
/* Allocate an empty string instead of returning NULL as user name */
|
||||
user = strdup("");
|
||||
if(!user)
|
||||
result = CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
free(*userp);
|
||||
*userp = user;
|
||||
|
||||
Curl_safefree(*userp);
|
||||
*userp = user;
|
||||
free(*passwdp);
|
||||
*passwdp = passwd;
|
||||
|
||||
/* Store the password part */
|
||||
Curl_safefree(*passwdp);
|
||||
*passwdp = passwd;
|
||||
}
|
||||
|
||||
return result;
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
#define C_SSLVERSION_VALUE(x) (x & 0xffff)
|
||||
|
Loading…
Reference in New Issue
Block a user