1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00

setopt: if the buffer exists, refuse the new BUFFERSIZE

The buffer only exists during transfer and then we shouldn't change the
size (the setopt is not documented to work then).

Reported-by: Harry Sintonen
Closes #5842
This commit is contained in:
Daniel Stenberg 2020-08-21 16:19:27 +02:00
parent fab5185275
commit bc3b5bcf87
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -2075,6 +2075,9 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
* The application kindly asks for a differently sized receive buffer.
* If it seems reasonable, we'll use it.
*/
if(data->state.buffer)
return CURLE_BAD_FUNCTION_ARGUMENT;
arg = va_arg(param, long);
if(arg > READBUFFER_MAX)
@ -2084,18 +2087,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
else if(arg < READBUFFER_MIN)
arg = READBUFFER_MIN;
/* Resize if new size */
if((arg != data->set.buffer_size) && data->state.buffer) {
char *newbuff = realloc(data->state.buffer, arg + 1);
if(!newbuff) {
DEBUGF(fprintf(stderr, "Error: realloc of buffer failed\n"));
result = CURLE_OUT_OF_MEMORY;
}
else
data->state.buffer = newbuff;
}
data->set.buffer_size = arg;
break;
case CURLOPT_UPLOAD_BUFFERSIZE: