summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2003-12-15 14:48:37 +0000
committerDaniel Stenberg <daniel@haxx.se>2003-12-15 14:48:37 +0000
commit50e7545118dca4bb456d7c8120ac8f2f4c5bf6f5 (patch)
tree91fca17e234a5089bb1d99259ddd9d8b2a6349bb
parent0839d6e6bc61f3fa035cd680056852cf3a6cd4e1 (diff)
downloadcurl-50e7545118dca4bb456d7c8120ac8f2f4c5bf6f5.tar.gz
Giuseppe Attardi fixed a really tricky bug
-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 */