aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/transfer.c6
-rw-r--r--lib/url.c3
-rw-r--r--lib/urldata.h2
3 files changed, 10 insertions, 1 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index 02eb7e206..1e3fafc8d 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -964,6 +964,12 @@ CURLcode Curl_readwrite(struct connectdata *conn,
/* convert LF to CRLF if so asked */
if (data->set.crlf) {
+ if(data->state.scratch == NULL)
+ data->state.scratch = malloc(2*BUFSIZE);
+ if(data->state.scratch == NULL) {
+ failf (data, "Failed to alloc scratch buffer!");
+ return CURLE_OUT_OF_MEMORY;
+ }
for(i = 0, si = 0; i < nread; i++, si++) {
if (conn->upload_fromhere[i] == 0x0a) {
data->state.scratch[si++] = 0x0d;
diff --git a/lib/url.c b/lib/url.c
index c743ed818..de5217d53 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -190,6 +190,9 @@ CURLcode Curl_close(struct SessionHandle *data)
if(data->state.auth_host)
free(data->state.auth_host);
+ if(data->state.scratch)
+ free(data->state.scratch);
+
if(data->change.proxy_alloc)
free(data->change.proxy);
diff --git a/lib/urldata.h b/lib/urldata.h
index d68e00998..bd0c80024 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -598,7 +598,7 @@ struct UrlState {
struct curl_ssl_session *session; /* array of 'numsessions' size */
long sessionage; /* number of the most recent session */
- char scratch[BUFSIZE*2]; /* huge buffer when doing upload CRLF replacing */
+ char *scratch; /* huge buffer[BUFSIZE*2] when doing upload CRLF replacing */
bool errorbuf; /* Set to TRUE if the error buffer is already filled in.
This must be set to FALSE every time _easy_perform() is
called. */