aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES4
-rw-r--r--lib/url.c4
2 files changed, 8 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index 766916fa5..f0fe36f18 100644
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,10 @@
Changelog
+Daniel (15 December)
+- Giuseppe Attardi found and fixed a problem within libcurl that re-used
+ already freed memory.
+
Daniel (10 December)
- Gisle Vanem reported that the dict support was broken. I broke it during my
ftps-changes overhaul. I've now added a 'curlassert' function that can be
diff --git a/lib/url.c b/lib/url.c
index 0dcc577af..d21cab247 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -3281,6 +3281,9 @@ CURLcode Curl_do(struct connectdata **connp)
conn->bits.close = TRUE; /* enforce close of this connetion */
result = Curl_done(conn); /* we are so done with this */
+
+ /* conn is no longer a good pointer */
+
if(CURLE_OK == result) {
bool async;
/* Now, redo the connect and get a new connection */
@@ -3288,6 +3291,7 @@ CURLcode Curl_do(struct connectdata **connp)
if(CURLE_OK == result) {
/* We have connected or sent away a name resolve query fine */
+ conn = *connp; /* setup conn to again point to something nice */
if(async) {
/* Now, if async is TRUE here, we need to wait for the name
to resolve */