diff options
author | Daniel Stenberg <daniel@haxx.se> | 2004-12-16 09:52:36 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2004-12-16 09:52:36 +0000 |
commit | d3b414724b18e84ed32c044527aac9a85e434690 (patch) | |
tree | 336fdd590a0b9a1aa4e246fb85c7219bcdd50312 | |
parent | 38181fbc7469ea69c8679d45f5968bdac7aea935 (diff) |
Dinar in bug report #1086121, found a file handle leak when a multipart
formpost (including a file upload part) was aborted before the whole file was
sent.
-rw-r--r-- | CHANGES | 5 | ||||
-rw-r--r-- | RELEASE-NOTES | 3 | ||||
-rw-r--r-- | lib/http.c | 3 | ||||
-rwxr-xr-x | tests/runtests.pl | 9 |
4 files changed, 17 insertions, 3 deletions
@@ -7,6 +7,11 @@ Changelog +Daniel (16 December 2004) +- Dinar in bug report #1086121, found a file handle leak when a multipart + formpost (including a file upload part) was aborted before the whole file + was sent. + Daniel (15 December 2004) - Tom Lee found out that globbing of strings with backslashes didn't work as you'd expect. Backslashes are such a central part of windows file names that diff --git a/RELEASE-NOTES b/RELEASE-NOTES index c2d53b54f..f14d33300 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -26,6 +26,7 @@ This release includes the following changes: This release includes the following bugfixes: + o file handle leak in aborted multipart formpost file upload o -T upload multiple files with backslashes in file names o modified credentials between two requests on a persistent http connection o large file file:// resumes on Windows @@ -71,6 +72,6 @@ advice from friends like these: Tim Sneddon, Ian Gulliver, Jean-Philippe Barrette-LaPierre, Jeff Phillips, Wojciech Zwiefka, David Phillips, Reinout van Schouwen, Maurice Barnum, Richard Atterer, Rene Bernhardt, Matt Veenstra, Bryan Henderson, Ton Voon, - Kai Sommerfeld, David Byron, Harshal Pradhan, Tom Lee + Kai Sommerfeld, David Byron, Harshal Pradhan, Tom Lee, Dinar Thanks! (and sorry if I forgot to mention someone) diff --git a/lib/http.c b/lib/http.c index d984eddc1..79e51b752 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1299,6 +1299,9 @@ CURLcode Curl_http_done(struct connectdata *conn, conn->bytecount = http->readbytecount + http->writebytecount; Curl_formclean(http->sendit); /* Now free that whole lot */ + if(http->form.fp) + /* a file being uploaded was left opened, close it! */ + fclose(http->form.fp); } else if(HTTPREQ_PUT == data->set.httpreq) conn->bytecount = http->readbytecount + http->writebytecount; diff --git a/tests/runtests.pl b/tests/runtests.pl index 1be984b58..1e8ff315b 100755 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -357,10 +357,15 @@ sub runhttpserver { my $data; if($res && $verbose) { - print "RUN: curl command returned $res\nRUN: "; open(ERR, "<log/verifystderr"); - print <ERR>; + my @e = <ERR>; close(ERR); + print "RUN: curl command returned $res\n"; + for(@e) { + if($_ !~ /^([ \t]*)$/) { + print "RUN: $_"; + } + } } open(FILE, "<log/verifiedserver"); my @file=<FILE>; |