summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2011-08-31 01:58:06 +0200
committerYang Tse <yangsita@gmail.com>2011-08-31 01:58:06 +0200
commitc06de200252fedc348af27ad9de9893d7c0a9a4d (patch)
tree2d8cb3f7831fb8f361b16557acfdb0f15e3f40ff /lib
parente495f82f86dc72fe91cf7ae8033b2a7029580b22 (diff)
downloadcurl-c06de200252fedc348af27ad9de9893d7c0a9a4d.tar.gz
fix some leaks torture tests detected 2011-08-30
Diffstat (limited to 'lib')
-rw-r--r--lib/ftp.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/lib/ftp.c b/lib/ftp.c
index 3d7f22b58..43a72eb05 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -1229,13 +1229,16 @@ static CURLcode ftp_state_post_listtype(struct connectdata *conn)
return CURLE_OUT_OF_MEMORY;
}
- PPSENDF(&conn->proto.ftpc.pp, "%s",cmd);
+ result = Curl_pp_sendf(&conn->proto.ftpc.pp, "%s", cmd);
if(lstArg)
free(lstArg);
free(cmd);
+ if(result != CURLE_OK)
+ return result;
+
state(conn, FTP_LIST);
return result;
@@ -2623,7 +2626,14 @@ static CURLcode ftp_statemach_act(struct connectdata *conn)
systems. */
if(!ftpc->server_os && ftpc->entrypath[0] != '/') {
- PPSENDF(&ftpc->pp, "SYST", NULL);
+
+ result = Curl_pp_sendf(&ftpc->pp, "SYST", NULL);
+ if(result != CURLE_OK) {
+ free(ftpc->entrypath);
+ ftpc->entrypath = NULL;
+ data->state.most_recent_ftp_entrypath = NULL;
+ return result;
+ }
state(conn, FTP_SYST);
break;
}
@@ -2656,13 +2666,19 @@ static CURLcode ftp_statemach_act(struct connectdata *conn)
for(store = os; *ptr && *ptr != ' ';)
*store++ = *ptr++;
*store = '\0'; /* zero terminate */
+ Curl_safefree(ftpc->server_os);
ftpc->server_os = os;
/* Check for special servers here. */
if(strequal(ftpc->server_os, "OS/400")) {
/* Force OS400 name format 1. */
- PPSENDF(&ftpc->pp, "SITE NAMEFMT 1", NULL);
+ result = Curl_pp_sendf(&ftpc->pp, "SITE NAMEFMT 1", NULL);
+ if(result != CURLE_OK) {
+ free(ftpc->server_os);
+ ftpc->server_os = NULL;
+ return result;
+ }
state(conn, FTP_NAMEFMT);
break;
}