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
|
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)
|
Daniel S (22 August 2007)
|
||||||
- Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
|
- 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
|
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 requests on directories sent "SIZE (null)"
|
||||||
o FTP NOBODY request on file crash
|
o FTP NOBODY request on file crash
|
||||||
o excessively long FTP server response lines
|
o excessively long FTP server response lines
|
||||||
|
o file:// upload then FTP:// upload crash
|
||||||
|
|
||||||
This release includes the following known bugs:
|
This release includes the following known bugs:
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,8 @@
|
||||||
*/
|
*/
|
||||||
CURLcode Curl_file_connect(struct connectdata *conn)
|
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;
|
struct FILEPROTO *file;
|
||||||
int fd;
|
int fd;
|
||||||
#if defined(WIN32) || defined(MSDOS) || defined(__EMX__)
|
#if defined(WIN32) || defined(MSDOS) || defined(__EMX__)
|
||||||
|
@ -113,9 +114,8 @@ CURLcode Curl_file_connect(struct connectdata *conn)
|
||||||
return CURLE_OUT_OF_MEMORY;
|
return CURLE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (conn->data->reqdata.proto.file) {
|
if (conn->data->reqdata.proto.file)
|
||||||
free(conn->data->reqdata.proto.file);
|
free(conn->data->reqdata.proto.file);
|
||||||
}
|
|
||||||
|
|
||||||
conn->data->reqdata.proto.file = file;
|
conn->data->reqdata.proto.file = file;
|
||||||
|
|
||||||
|
@ -177,6 +177,9 @@ CURLcode Curl_file_done(struct connectdata *conn,
|
||||||
if(file->fd != -1)
|
if(file->fd != -1)
|
||||||
close(file->fd);
|
close(file->fd);
|
||||||
|
|
||||||
|
free(file);
|
||||||
|
conn->data->reqdata.proto.file= NULL; /* clear it! */
|
||||||
|
|
||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче