mirror of
https://github.com/curl/curl.git
synced 2024-11-27 05:50:21 +08:00
Prevent uploading to a URL that has no file name part.
This commit is contained in:
parent
aa50a00898
commit
7d68101f83
9
CHANGES
9
CHANGES
@ -7,6 +7,11 @@
|
|||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
Daniel (2 March 2006)
|
Daniel (2 March 2006)
|
||||||
|
- FTP upload without a file name part in the URL now causes
|
||||||
|
curl_easy_perform() to return CURLE_URL_MALFORMAT. Previously it allowed the
|
||||||
|
upload but named the file "(nil)" (without the quotes). Test case 524
|
||||||
|
verifies.
|
||||||
|
|
||||||
- Added a check for getprotobyname in configure so that it'll be used, thanks
|
- Added a check for getprotobyname in configure so that it'll be used, thanks
|
||||||
to Gisle Vanem's change the other day.
|
to Gisle Vanem's change the other day.
|
||||||
|
|
||||||
@ -15,6 +20,10 @@ Daniel (28 February 2006)
|
|||||||
are out of file handles very early in curl's code where it makes sure that
|
are out of file handles very early in curl's code where it makes sure that
|
||||||
0, 1 and 2 aren't gonna be used by the lib for transfers.
|
0, 1 and 2 aren't gonna be used by the lib for transfers.
|
||||||
|
|
||||||
|
Daniel (27 February 2006)
|
||||||
|
- Marty Kuhrt pointed out that there were two VMS-specific files missing in
|
||||||
|
the release archive.
|
||||||
|
|
||||||
Version 7.15.2 (27 February 2006)
|
Version 7.15.2 (27 February 2006)
|
||||||
|
|
||||||
Daniel (22 February 2006)
|
Daniel (22 February 2006)
|
||||||
|
@ -7,7 +7,7 @@ Curl and libcurl 7.15.3
|
|||||||
Number of public functions in libcurl: 46
|
Number of public functions in libcurl: 46
|
||||||
Amount of public web site mirrors: 31
|
Amount of public web site mirrors: 31
|
||||||
Number of known libcurl bindings: 32
|
Number of known libcurl bindings: 32
|
||||||
Number of contributors: 474
|
Number of contributors: 487
|
||||||
|
|
||||||
This release includes the following changes:
|
This release includes the following changes:
|
||||||
|
|
||||||
|
@ -3816,6 +3816,13 @@ CURLcode ftp_parse_url_path(struct connectdata *conn)
|
|||||||
ftp->file=NULL; /* instead of point to a zero byte, we make it a NULL
|
ftp->file=NULL; /* instead of point to a zero byte, we make it a NULL
|
||||||
pointer */
|
pointer */
|
||||||
|
|
||||||
|
if(data->set.upload && !ftp->file &&
|
||||||
|
(!ftp->no_transfer || conn->bits.no_body)) {
|
||||||
|
/* We need a file name when uploading. Return error! */
|
||||||
|
failf(data, "Uploading to a URL without a file name!");
|
||||||
|
return CURLE_URL_MALFORMAT;
|
||||||
|
}
|
||||||
|
|
||||||
ftp->cwddone = FALSE; /* default to not done */
|
ftp->cwddone = FALSE; /* default to not done */
|
||||||
|
|
||||||
if(ftp->prevpath) {
|
if(ftp->prevpath) {
|
||||||
|
44
tests/data/test524
Normal file
44
tests/data/test524
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
<info>
|
||||||
|
<keywords>
|
||||||
|
FTP
|
||||||
|
UPLOAD
|
||||||
|
</keywords>
|
||||||
|
</info>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Server-side
|
||||||
|
<reply>
|
||||||
|
</reply>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Client-side
|
||||||
|
<client>
|
||||||
|
<server>
|
||||||
|
ftp
|
||||||
|
</server>
|
||||||
|
<tool>
|
||||||
|
lib524
|
||||||
|
</tool>
|
||||||
|
<name>
|
||||||
|
FTP upload with target URL ending with slash
|
||||||
|
</name>
|
||||||
|
# first URL then proxy
|
||||||
|
<command>
|
||||||
|
ftp://%HOSTIP:%FTPPORT/path/to/
|
||||||
|
</command>
|
||||||
|
</client>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verify data after the test has been "shot"
|
||||||
|
<verify>
|
||||||
|
<protocol>
|
||||||
|
USER anonymous
|
||||||
|
PASS curl_by_daniel@haxx.se
|
||||||
|
PWD
|
||||||
|
</protocol>
|
||||||
|
|
||||||
|
# 3 is CURLE_URL_MALFORMAT
|
||||||
|
<errorcode>
|
||||||
|
3
|
||||||
|
</errorcode>
|
||||||
|
</verify>
|
@ -5,7 +5,7 @@
|
|||||||
# | (__| |_| | _ <| |___
|
# | (__| |_| | _ <| |___
|
||||||
# \___|\___/|_| \_\_____|
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# Copyright (C) 1998 - 2005, Daniel Stenberg, <daniel@haxx.se>, et al.
|
# Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
#
|
#
|
||||||
# This software is licensed as described in the file COPYING, which
|
# This software is licensed as described in the file COPYING, which
|
||||||
# you should have received as part of this distribution. The terms
|
# you should have received as part of this distribution. The terms
|
||||||
@ -40,7 +40,7 @@ SUPPORTFILES = first.c test.h
|
|||||||
# These are all libcurl test programs
|
# These are all libcurl test programs
|
||||||
noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 \
|
noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 \
|
||||||
lib508 lib509 lib510 lib511 lib512 lib513 lib514 lib515 lib516 lib517 \
|
lib508 lib509 lib510 lib511 lib512 lib513 lib514 lib515 lib516 lib517 \
|
||||||
lib518 lib519 lib520 lib521 lib523
|
lib518 lib519 lib520 lib521 lib523 lib524
|
||||||
|
|
||||||
lib500_SOURCES = lib500.c $(SUPPORTFILES)
|
lib500_SOURCES = lib500.c $(SUPPORTFILES)
|
||||||
lib500_LDADD = $(LIBDIR)/libcurl.la
|
lib500_LDADD = $(LIBDIR)/libcurl.la
|
||||||
@ -133,3 +133,7 @@ lib521_DEPENDENCIES = $(LIBDIR)/libcurl.la
|
|||||||
lib523_SOURCES = lib523.c $(SUPPORTFILES)
|
lib523_SOURCES = lib523.c $(SUPPORTFILES)
|
||||||
lib523_LDADD = $(LIBDIR)/libcurl.la
|
lib523_LDADD = $(LIBDIR)/libcurl.la
|
||||||
lib523_DEPENDENCIES = $(LIBDIR)/libcurl.la
|
lib523_DEPENDENCIES = $(LIBDIR)/libcurl.la
|
||||||
|
|
||||||
|
lib524_SOURCES = lib524.c $(SUPPORTFILES)
|
||||||
|
lib524_LDADD = $(LIBDIR)/libcurl.la
|
||||||
|
lib524_DEPENDENCIES = $(LIBDIR)/libcurl.la
|
||||||
|
15
tests/libtest/lib524.c
Normal file
15
tests/libtest/lib524.c
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include "test.h"
|
||||||
|
|
||||||
|
int test(char *URL)
|
||||||
|
{
|
||||||
|
CURLcode res;
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, URL);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
return (int)res;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user