diff options
author | Yang Tse <yangsita@gmail.com> | 2011-10-05 16:41:04 +0200 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2011-10-05 16:41:04 +0200 |
commit | ec73fd89ed5b526548e61527037e1603234333a0 (patch) | |
tree | 2d3be4893b383eb5f7b3c4bd37379190dc95812f /src | |
parent | 5bf0d74120a92fb834b0d13098c0b5e93249a84f (diff) |
curl tool: OOM handling fixes
Diffstat (limited to 'src')
-rw-r--r-- | src/tool_getparam.c | 18 | ||||
-rw-r--r-- | src/tool_operhlp.c | 3 |
2 files changed, 15 insertions, 6 deletions
diff --git a/src/tool_getparam.c b/src/tool_getparam.c index ae2970fb7..1c92e053a 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -936,7 +936,8 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ } else { GetStr(&postdata, p); - size = strlen(postdata); + if(postdata) + size = strlen(postdata); } if(!postdata) { @@ -1019,8 +1020,12 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ } #ifdef CURL_DOES_CONVERSIONS - if(subletter != 'b') { /* NOT forced binary, convert to ASCII */ - convert_to_network(postdata, strlen(postdata)); + if(subletter != 'b') { + /* NOT forced binary, convert to ASCII */ + if(convert_to_network(postdata, strlen(postdata))) { + Curl_safefree(postdata); + return PARAM_NO_MEM; + } } #endif @@ -1032,6 +1037,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ curl_off_t newlen = oldlen + size + 2; config->postfields = malloc((size_t)newlen); if(!config->postfields) { + Curl_safefree(oldpost); Curl_safefree(postdata); return PARAM_NO_MEM; } @@ -1053,8 +1059,10 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ We can't set the request type here, as this data might be used in a simple GET if -G is used. Already or soon. - if(SetHTTPrequest(HTTPREQ_SIMPLEPOST, &config->httpreq)) - return PARAM_BAD_USE; + if(SetHTTPrequest(HTTPREQ_SIMPLEPOST, &config->httpreq)) { + Curl_safefree(postdata); + return PARAM_BAD_USE; + } */ break; case 'D': diff --git a/src/tool_operhlp.c b/src/tool_operhlp.c index 5a6a670f9..d7dbe13c1 100644 --- a/src/tool_operhlp.c +++ b/src/tool_operhlp.c @@ -132,6 +132,7 @@ char *add_file_name_to_url(CURL *curl, char *url, const char *filename) if(encfile) { char *urlbuffer = malloc(strlen(url) + strlen(encfile) + 3); if(!urlbuffer) { + curl_free(encfile); Curl_safefree(url); return NULL; } @@ -143,8 +144,8 @@ char *add_file_name_to_url(CURL *curl, char *url, const char *filename) sprintf(urlbuffer, "%s/%s", url, encfile); curl_free(encfile); - Curl_safefree(url); + url = urlbuffer; /* use our new URL instead! */ } } |