]> granicus.if.org Git - curl/commitdiff
Dinar in bug report #1086121, found a file handle leak when a multipart
authorDaniel Stenberg <daniel@haxx.se>
Thu, 16 Dec 2004 09:52:36 +0000 (09:52 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 16 Dec 2004 09:52:36 +0000 (09:52 +0000)
formpost (including a file upload part) was aborted before the whole file was
sent.

CHANGES
RELEASE-NOTES
lib/http.c
tests/runtests.pl

diff --git a/CHANGES b/CHANGES
index c77f06f5fc2a2acf536cb8945898f9426c0cd87c..4a4d7514007485650884e71060cfe4d7d4b71d8e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -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
index c2d53b54f51bb465d2c88862b0a728aba63b27c2..f14d33300737d9cfd6798dc9aa7e4ccb9ea1c31a 100644 (file)
@@ -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)
index d984eddc1d60977a89cd8749074dfd1288735839..79e51b752f0bde584ad48a4c10b2108f779f9946 100644 (file)
@@ -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;
index 1be984b58ab11f516c17d5b8c90002976a83eb15..1e8ff315b6a761c035798438c85f9e3f7ff52f22 100755 (executable)
@@ -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>;