Hzhijun reported a memory leak in the SSL certificate code, that leaked the
authorDaniel Stenberg <daniel@haxx.se>
Mon, 10 Jan 2005 09:48:39 +0000 (09:48 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 10 Jan 2005 09:48:39 +0000 (09:48 +0000)
remote certificate name when it didn't match the used host name.

CHANGES
RELEASE-NOTES
lib/ssluse.c

diff --git a/CHANGES b/CHANGES
index 60bef5659356f6cb50721fb719e0c0e0fa008b4b..e9b187d3ec220987d21d41b2805f2a2bf4730bfb 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,10 @@
                                   Changelog
 
 
+Daniel (10 January 2005)
+- Hzhijun reported a memory leak in the SSL certificate code, that leaked the
+  remote certificate name when it didn't match the used host name.
+
 Gisle (8 January 2005)
 - Added Makefile.Watcom files (src/lib). Updated Makefile.dist.
 
index 5c219d5a19122b918038497fae8e8fb20af73f7c..c336b1927ecb4ba771b8dccdb240d5e90c2ca338 100644 (file)
@@ -16,6 +16,7 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
+ o SSL certificate name memory leak
  o -d with -G to multiple URLs crashed
  o double va_list access crash fixed
  o minor memory leak when "version" is set in a cookie header
@@ -31,6 +32,7 @@ This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
  Dan Fandrich, Peter Pentchev, Marcin Konicki, Rune Kleveland, David Shaw,
- Werner Koch, Gisle Vanem, Alex Neblett, Kai Sommerfeld, Marty Kuhrt
+ Werner Koch, Gisle Vanem, Alex Neblett, Kai Sommerfeld, Marty Kuhrt,
+ Hzhijun
 
         Thanks! (and sorry if I forgot to mention someone)
index fa2c64ec063a8c9ebcbcc87692ea26cf7cd25a93..d7282d519d9997a36a8ef1f077cca6629a1b23d2 100644 (file)
@@ -1003,6 +1003,7 @@ static CURLcode verifyhost(struct connectdata *conn,
 #else
   struct in_addr addr;
 #endif
+  CURLcode res = CURLE_OK;
 
 #ifdef ENABLE_IPV6
   if(conn->bits.ipv6_ip &&
@@ -1131,8 +1132,7 @@ static CURLcode verifyhost(struct connectdata *conn,
       if(data->set.ssl.verifyhost > 1) {
         failf(data, "SSL: certificate subject name '%s' does not match "
               "target host name '%s'", peer_CN, conn->host.dispname);
-        OPENSSL_free(peer_CN);
-        return CURLE_SSL_PEER_CERTIFICATE ;
+        res = CURLE_SSL_PEER_CERTIFICATE;
       }
       else
         infof(data, "\t common name: %s (does not match '%s')\n",
@@ -1140,10 +1140,11 @@ static CURLcode verifyhost(struct connectdata *conn,
     }
     else {
       infof(data, "\t common name: %s (matched)\n", peer_CN);
-      OPENSSL_free(peer_CN);
     }
+    if(peer_CN)
+      OPENSSL_free(peer_CN);
   }
-  return CURLE_OK;
+  return res;
 }
 #endif