setopt: do bounds-check before strdup

Curl_setstropt() allocated memory for the string before checking if the
string was within bounds. The bounds check should be done first.

Closes #8377
This commit is contained in:
HenrikHolst 2022-02-03 01:03:42 +01:00 коммит произвёл Daniel Stenberg
Родитель 2cd6d7e462
Коммит a121e8dac6
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 5CC908FDB71E12C2
1 изменённых файлов: 4 добавлений и 11 удалений

Просмотреть файл

@ -62,19 +62,12 @@ CURLcode Curl_setstropt(char **charp, const char *s)
Curl_safefree(*charp);
if(s) {
char *str = strdup(s);
if(strlen(s) > CURL_MAX_INPUT_LENGTH)
return CURLE_BAD_FUNCTION_ARGUMENT;
if(str) {
size_t len = strlen(str);
if(len > CURL_MAX_INPUT_LENGTH) {
free(str);
return CURLE_BAD_FUNCTION_ARGUMENT;
}
}
if(!str)
*charp = strdup(s);
if(!*charp)
return CURLE_OUT_OF_MEMORY;
*charp = str;
}
return CURLE_OK;