mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
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.
This commit is contained in:
parent
04d3a8c714
commit
93bd512357
21
src/main.c
21
src/main.c
@ -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);
|
||||
|
@ -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
|
||||
|
30
tests/data/test289
Normal file
30
tests/data/test289
Normal file
@ -0,0 +1,30 @@
|
||||
<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>
|
Loading…
Reference in New Issue
Block a user