mirror of
https://github.com/curl/curl.git
synced 2025-01-18 14:04:30 +08: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:
parent
fab5185275
commit
bc3b5bcf87
14
lib/setopt.c
14
lib/setopt.c
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user