Commit 93bd5123 authored by Dan Fandrich's avatar Dan Fandrich
Browse files

Fixed a curl memory leak reported by Song Ma with a modified version

of the patch he suggested.  Added his test case as test289 to verify.
parent 04d3a8c7
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -4009,7 +4009,21 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
            helpf("Can't open '%s'!\n", uploadfile);
            if(infd)
              fclose(infd);
            return CURLE_READ_ERROR;

            /* Free the list of remaining URLs and globbed upload files
             * to force curl to exit immediately
             */
	    if(urls) {
	      glob_cleanup(urls);
	      urls = NULL;
	    }
	    if(inglob) {
	      glob_cleanup(inglob);
	      inglob = NULL;
	    }

	    res = CURLE_READ_ERROR;
	    goto quit_urls;
          }
          infdfopen=TRUE;
          uploadfilesize=fileinfo.st_size;
@@ -4557,6 +4571,7 @@ show_error:
        SetComment( outs.filename, url);
#endif

quit_urls:
        if(headerfilep)
          fclose(headerfilep);

@@ -4571,9 +4586,11 @@ show_error:

      } /* loop to the next URL */

      if(urls)
      if(urls) {
        /* cleanup memory used for URL globbing patterns */
        glob_cleanup(urls);
        urls = NULL;
      }

      if(uploadfile)
        free(uploadfile);
+1 −1
Original line number Diff line number Diff line
@@ -42,4 +42,4 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
 test405 test604 test605 test606 test607 test608 test609 test294 test295   \
 test296 test297 test298 test610 test611 test612 test406 test407 test408   \
 test409 test613 test614 test700 test701 test702 test704 test705 test703   \
 test706 test707 test350 test351 test352 test353
 test706 test707 test350 test351 test352 test353 test289

tests/data/test289

0 → 100644
+30 −0
Original line number Diff line number Diff line
<testcase>
<info>
<keywords>
FTP
STOR
Resume
FAILURE
</keywords>
</info>

# Client-side
<client>
<server>
ftp
</server>
 <name>
FTP resume upload but denied access to remote file
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/289 -T log/illegal-nonexistent-file -C -
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
26
</errorcode>
</verify>
</testcase>