aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2007-10-25 07:47:38 +0000
committerDaniel Stenberg <daniel@haxx.se>2007-10-25 07:47:38 +0000
commit91e27ce755a2dbf8084517fb4ec441a260ffee84 (patch)
tree6e087dc099dc6933e482d2cda2793c482c895fac
parent65ed69662513b14143e8821c72ea41d7c69113d9 (diff)
Fixed a TFTP memory leak. Enabled test 2003 to verify this.
-rw-r--r--CHANGES5
-rw-r--r--RELEASE-NOTES2
-rw-r--r--lib/tftp.c6
-rw-r--r--tests/data/DISABLED1
4 files changed, 11 insertions, 3 deletions
diff --git a/CHANGES b/CHANGES
index e6cc37a69..ab7cce15b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,11 @@
Changelog
+Daniel S (25 October 2007)
+- Fixed a few memory leaks when the same easy handle is re-used to request
+ URLs with different protocols. FTP and TFTP related leaks. Caught thanks to
+ Dan F's new test cases.
+
Dan F (24 October 2007)
- Fixed the test FTP and TFTP servers to support the >10000 test number
notation
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index c35f94710..efd7e730a 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -40,7 +40,7 @@ This release includes the following bugfixes:
o CURLOPT_POSTFIELDS could fail to send binary data
o specifying a proxy with a trailing slash didn't work (unless it also
contained a port number)
- o redirect from HTTP to FTP memory problem
+ o redirect from HTTP to FTP or TFTP memory problems and leaks
o re-used connections a bit too much when using non-SSL protocols tunneled
over a HTTP proxy
o embed the manifest in VC8 builds
diff --git a/lib/tftp.c b/lib/tftp.c
index ba7842280..041a5f340 100644
--- a/lib/tftp.c
+++ b/lib/tftp.c
@@ -605,9 +605,13 @@ static CURLcode tftp_state_machine(tftp_state_data_t *state,
static CURLcode Curl_tftp_connect(struct connectdata *conn, bool *done)
{
CURLcode code;
- tftp_state_data_t *state;
+ tftp_state_data_t *state;
int rc;
+ /* If there already is a protocol-specific struct allocated for this
+ sessionhandle, deal with it */
+ Curl_reset_reqproto(conn);
+
state = conn->data->reqdata.proto.tftp = calloc(sizeof(tftp_state_data_t),
1);
if(!state)
diff --git a/tests/data/DISABLED b/tests/data/DISABLED
index a655a70b9..95953eab3 100644
--- a/tests/data/DISABLED
+++ b/tests/data/DISABLED
@@ -4,4 +4,3 @@
# per line.
# Lines starting with '#' letters are treated as comments.
#1009
-2003