Bug report #1779751 (http://curl.haxx.se/bug/view.cgi?id=1779751) pointed
out that doing first a file:// upload and then an FTP upload crashed libcurl or at best caused furious valgrind complaints. Fixed now by making sure we free and clear the file-specific struct properly when done with it.
This commit is contained in:
Родитель
d38891c950
Коммит
91fd2c3bcd
5
CHANGES
5
CHANGES
|
@ -6,6 +6,11 @@
|
|||
|
||||
Changelog
|
||||
|
||||
Daniel S (23 August 2007)
|
||||
- Bug report #1779751 (http://curl.haxx.se/bug/view.cgi?id=1779751) pointed
|
||||
out that doing first a file:// upload and then an FTP upload crashed libcurl
|
||||
or at best caused furious valgrind complaints. Fixed now!
|
||||
|
||||
Daniel S (22 August 2007)
|
||||
- Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
|
||||
out that libcurl didn't deal with very long (>16K) FTP server response lines
|
||||
|
|
|
@ -45,6 +45,7 @@ This release includes the following bugfixes:
|
|||
o FTP NOBODY requests on directories sent "SIZE (null)"
|
||||
o FTP NOBODY request on file crash
|
||||
o excessively long FTP server response lines
|
||||
o file:// upload then FTP:// upload crash
|
||||
|
||||
This release includes the following known bugs:
|
||||
|
||||
|
|
|
@ -96,7 +96,8 @@
|
|||
*/
|
||||
CURLcode Curl_file_connect(struct connectdata *conn)
|
||||
{
|
||||
char *real_path = curl_easy_unescape(conn->data, conn->data->reqdata.path, 0, NULL);
|
||||
char *real_path = curl_easy_unescape(conn->data, conn->data->reqdata.path, 0,
|
||||
NULL);
|
||||
struct FILEPROTO *file;
|
||||
int fd;
|
||||
#if defined(WIN32) || defined(MSDOS) || defined(__EMX__)
|
||||
|
@ -113,9 +114,8 @@ CURLcode Curl_file_connect(struct connectdata *conn)
|
|||
return CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (conn->data->reqdata.proto.file) {
|
||||
if (conn->data->reqdata.proto.file)
|
||||
free(conn->data->reqdata.proto.file);
|
||||
}
|
||||
|
||||
conn->data->reqdata.proto.file = file;
|
||||
|
||||
|
@ -177,6 +177,9 @@ CURLcode Curl_file_done(struct connectdata *conn,
|
|||
if(file->fd != -1)
|
||||
close(file->fd);
|
||||
|
||||
free(file);
|
||||
conn->data->reqdata.proto.file= NULL; /* clear it! */
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче