diff options
author | Daniel Stenberg <daniel@haxx.se> | 2020-08-21 16:19:27 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-08-23 18:38:32 +0200 |
commit | 8e803e968b175401dabba3e1066d1ce77b17ff65 (patch) | |
tree | d5547a91264d14bcd6da40e8471d515419c50a65 | |
parent | d71ac6711a4616a851d048cfa82102d1d9e25bdd (diff) | |
download | curl-bagder/buffersize.tar.gz |
setopt: if the buffer exists, refuse the new sizebagder/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
-rw-r--r-- | lib/setopt.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/lib/setopt.c b/lib/setopt.c index d6213357c..768452ca1 100644 --- a/lib/setopt.c +++ b/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: |