Constantine Sapuntzakis detected and fixed a double free in builds done
authorYang Tse <yangsita@gmail.com>
Fri, 5 Mar 2010 03:15:19 +0000 (03:15 +0000)
committerYang Tse <yangsita@gmail.com>
Fri, 5 Mar 2010 03:15:19 +0000 (03:15 +0000)
with threaded resolver enabled (Windows default configuration) that would
get triggered when a curl handle is closed while doing DNS resolution.

CHANGES
RELEASE-NOTES
lib/url.c

diff --git a/CHANGES b/CHANGES
index e404411..8147d00 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,11 @@
 
                                   Changelog
 
+Yang Tse (5 Mar 2010)
+- Constantine Sapuntzakis detected and fixed a double free in builds done
+  with threaded resolver enabled (Windows default configuration) that would
+  get triggered when a curl handle is closed while doing DNS resolution.
+
 Daniel Stenberg (2 Mar 2010)
 - [Daniel Johnson] I've been trying to build libcurl with clang on Darwin and
   ran into some issues with the GSSAPI tests in configure.ac. The tests first
index b96171c..d59cba5 100644 (file)
@@ -28,6 +28,7 @@ This release includes the following bugfixes:
  o CURLOPT_CERTINFO memory leak
  o sub-second timeouts improvements
  o configure fixes for GSSAPI
+ o threaded resolver double free when closing curl handle
 
 This release includes the following known bugs:
 
index 887c06a..fe9c322 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -2490,12 +2490,11 @@ static void conn_free(struct connectdata *conn)
   Curl_llist_destroy(conn->done_pipe, NULL);
 
   /* possible left-overs from the async name resolvers */
-#if defined(CURLRES_ASYNCH)
-  Curl_safefree(conn->async.hostname);
-  Curl_safefree(conn->async.os_specific);
 #if defined(CURLRES_THREADED)
   Curl_destroy_thread_data(&conn->async);
-#endif
+#elif defined(CURLRES_ASYNCH)
+  Curl_safefree(conn->async.hostname);
+  Curl_safefree(conn->async.os_specific);
 #endif
 
   Curl_free_ssl_config(&conn->ssl_config);