Commit 7d68101f authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Prevent uploading to a URL that has no file name part.

parent aa50a008
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -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)
+1 −1
Original line number Original line Diff line number Diff line
@@ -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:


+7 −0
Original line number Original line Diff line number Diff line
@@ -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) {

tests/data/test524

0 → 100644
+44 −0
Original line number Original line Diff line number Diff line
<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>
+6 −2
Original line number Original line Diff line number Diff line
@@ -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
Loading