]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
fix some leaks torture tests detected 2011-08-30
authorYang Tse <yangsita@gmail.com>
Tue, 30 Aug 2011 23:58:06 +0000 (01:58 +0200)
committerYang Tse <yangsita@gmail.com>
Tue, 30 Aug 2011 23:58:06 +0000 (01:58 +0200)
lib/ftp.c

index 3d7f22b58060e78b6c7f4b0a175aa4bf2d03d0f4..43a72eb05a1a639318863187175ee8fcdd23bc58 100644 (file)
--- 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;
         }