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:
Daniel Stenberg 2024-05-13 16:25:12 +02:00
parent 0c49ea4ff2
commit a11774776f
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -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)