diff options
author | Yang Tse <yangsita@gmail.com> | 2011-08-31 01:58:06 +0200 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2011-08-31 01:58:06 +0200 |
commit | c06de200252fedc348af27ad9de9893d7c0a9a4d (patch) | |
tree | 2d8cb3f7831fb8f361b16557acfdb0f15e3f40ff /lib | |
parent | e495f82f86dc72fe91cf7ae8033b2a7029580b22 (diff) | |
download | curl-c06de200252fedc348af27ad9de9893d7c0a9a4d.tar.gz |
fix some leaks torture tests detected 2011-08-30
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ftp.c | 22 |
1 files changed, 19 insertions, 3 deletions
@@ -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; } |