From f4551a967820ab2be76fd5d600fbce32cd290e62 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Fri, 5 Mar 2010 03:15:19 +0000 Subject: [PATCH] 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. --- CHANGES | 5 +++++ RELEASE-NOTES | 1 + lib/url.c | 7 +++---- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index e40441152..8147d00fd 100644 --- 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 diff --git a/RELEASE-NOTES b/RELEASE-NOTES index b96171cc5..d59cba5ae 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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: diff --git a/lib/url.c b/lib/url.c index 887c06a84..fe9c322bf 100644 --- 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);