aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2011-10-05 16:41:04 +0200
committerYang Tse <yangsita@gmail.com>2011-10-05 16:41:04 +0200
commitec73fd89ed5b526548e61527037e1603234333a0 (patch)
tree2d3be4893b383eb5f7b3c4bd37379190dc95812f /src
parent5bf0d74120a92fb834b0d13098c0b5e93249a84f (diff)
curl tool: OOM handling fixes
Diffstat (limited to 'src')
-rw-r--r--src/tool_getparam.c18
-rw-r--r--src/tool_operhlp.c3
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! */
}
}