pop3: fixed memory leak in an error retrieval case
authorDan Fandrich <dan@coneharvesters.com>
Thu, 17 Mar 2011 23:28:12 +0000 (16:28 -0700)
committerDan Fandrich <dan@coneharvesters.com>
Thu, 17 Mar 2011 23:28:12 +0000 (16:28 -0700)
lib/pop3.c

index d6e6303..65169cf 100644 (file)
@@ -690,6 +690,7 @@ static CURLcode pop3_done(struct connectdata *conn, CURLcode status,
 {
   struct SessionHandle *data = conn->data;
   struct FTP *pop3 = data->state.proto.pop3;
+  struct pop3_conn *pop3c = &conn->proto.pop3c;
   CURLcode result=CURLE_OK;
   (void)premature;
 
@@ -706,6 +707,9 @@ static CURLcode pop3_done(struct connectdata *conn, CURLcode status,
     result = status;      /* use the already set error code */
   }
 
+  free(pop3c->mailbox);
+  pop3c->mailbox = NULL;
+
   /* clear these for next connection */
   pop3->transfer = FTPTRANSFER_BODY;
 
@@ -884,8 +888,6 @@ static CURLcode pop3_dophase_done(struct connectdata *conn,
     /* no data to transfer */
     Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
 
-  free(pop3c->mailbox);
-
   return CURLE_OK;
 }