gtls: fix memory leak
authorDaniel Stenberg <daniel@haxx.se>
Wed, 5 Jan 2011 23:47:37 +0000 (00:47 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Sat, 8 Jan 2011 18:14:28 +0000 (19:14 +0100)
Bug: http://curl.haxx.se/mail/lib-2011-01/0079.html
Reported by: Quinn Slack

lib/gtls.c

index 804f7844657a62ddf80dfec01081ac01f0ea5c49..9a87c39a8d276eecb11a989cd0ed6c0cc1348e2e 100644 (file)
@@ -483,6 +483,7 @@ gtls_connect_step3(struct connectdata *conn,
   int rc;
   int incache;
   void *ssl_sessionid;
+  CURLcode result = CURLE_OK;
 
   /* This function will return the peer's raw certificate (chain) as sent by
      the peer. These certificates are in raw format (DER encoded for
@@ -701,11 +702,17 @@ gtls_connect_step3(struct connectdata *conn,
       }
 
       /* store this session id */
-      return Curl_ssl_addsessionid(conn, connect_sessionid, connect_idsize);
+      result = Curl_ssl_addsessionid(conn, connect_sessionid, connect_idsize);
+      if(result) {
+        free(connect_sessionid);
+        result = CURLE_OUT_OF_MEMORY;
+      }
     }
+    else
+      result = CURLE_OUT_OF_MEMORY;
   }
 
-  return CURLE_OK;
+  return result;
 }