Commit 0e5da5b8 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

- Scott Barrett provided a test case for a segfault in the FTP code and the

  fix for it. It occured when you did a FTP transfer using
  CURLFTPMETHOD_SINGLECWD and then did another one on the same easy handle but
  switched to CURLFTPMETHOD_NOCWD. Due to the "dir depth" variable not being
  cleared properly.  Scott's test case is now known as test 539 and it
  verifies the fix.
parent ddfa4b88
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -6,6 +6,14 @@

                                  Changelog

Daniel Stenberg (7 Jul 2008)
- Scott Barrett provided a test case for a segfault in the FTP code and the
  fix for it. It occured when you did a FTP transfer using
  CURLFTPMETHOD_SINGLECWD and then did another one on the same easy handle but
  switched to CURLFTPMETHOD_NOCWD. Due to the "dir depth" variable not being
  cleared properly.  Scott's test case is now known as test 539 and it
  verifies the fix.

Daniel Stenberg (3 Jul 2008)
- Phil Blundell provided a fix for libcurl's treatment of unexpected 1xx
  response codes. Previously libcurl would hang on such occurances. I added
+2 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ This release includes the following bugfixes:
 o fallback to gettimeofday when monotonic clock is unavailable at run-time
 o range numbers could be made to wrongly get output as signed
 o unexpected 1xx responses hung transfers
 o FTP transfers segfault when using different CURLOPT_FTP_FILEMETHOD

This release includes the following known bugs:

@@ -49,7 +50,7 @@ advice from friends like these:
 Lenny Rachitsky, Axel Tillequin, Arnaud Ebalard, Yang Tse, Dan Fandrich,
 Rob Crittenden, Dengminwen, Christopher Palow, Hans-Jurgen May,
 Phil Pellouchoud, Eduard Bloch, John Lightsey, Stephen Collyer, Tor Arntsen,
 Rolland Dudemaine, Phil Blundell
 Rolland Dudemaine, Phil Blundell, Scott Barrett


        Thanks! (and sorry if I forgot to mention someone)
+1 −0
Original line number Diff line number Diff line
@@ -279,6 +279,7 @@ static void freedirs(struct ftp_conn *ftpc)
    }
    free(ftpc->dirs);
    ftpc->dirs = NULL;
    ftpc->dirdepth = 0;
  }
  if(ftpc->file) {
    free(ftpc->file);

tests/data/test539

0 → 100644
+63 −0
Original line number Diff line number Diff line
<testcase>
#
# Server-side
<reply>
<data mode="text">
file contents
</data>

<datacheck>
file contents
total 20
drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
drwxr-xr-x   2 98       98           512 May  2  1996 .NeXT
-r--r--r--   1 0        1             35 Jul 16  1996 README
lrwxrwxrwx   1 0        1              7 Dec  9  1999 bin -> usr/bin
dr-xr-xr-x   2 0        1            512 Oct  1  1997 dev
drwxrwxrwx   2 98       98           512 May 29 16:04 download.html
dr-xr-xr-x   2 0        1            512 Nov 30  1995 etc
drwxrwxrwx   2 98       1            512 Oct 30 14:33 pub
dr-xr-xr-x   5 0        1            512 Oct  1  1997 usr
</datacheck>
</reply>

# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib539
</tool>

 <name>
Two FTP fetches using different CURLOPT_FTP_FILEMETHOD
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/to/the/file/539
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path/to/the/file
EPSV
TYPE I
SIZE 539
RETR 539
SYST
CWD /nowhere/anywhere
EPSV
TYPE A
LIST path/to/the/file/539./
QUIT
</protocol>
</verify>
</testcase>
+4 −1
Original line number Diff line number Diff line
@@ -48,7 +48,8 @@ noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 \
  lib507 lib508 lib510 lib511 lib512 lib513 lib514 lib515 lib516	\
  lib517 lib518 lib519 lib520 lib521 lib523 lib524 lib525 lib526 lib527	\
  lib529 lib530 lib532 lib533 lib536 lib537 lib540 lib541 lib542 lib543 \
  lib544 lib545 lib547 lib548 lib549 lib552 lib553 lib554 lib555 lib556
  lib544 lib545 lib547 lib548 lib549 lib552 lib553 lib554 lib555 lib556 \
  lib539

# Dependencies (may need to be overriden)
LDADD = $(LIBDIR)/libcurl.la
@@ -124,6 +125,8 @@ lib536_SOURCES = lib536.c $(SUPPORTFILES) $(TESTUTIL)

lib537_SOURCES = lib537.c $(SUPPORTFILES)

lib539_SOURCES = lib539.c $(SUPPORTFILES)

lib540_SOURCES = lib540.c $(SUPPORTFILES)

lib541_SOURCES = lib541.c $(SUPPORTFILES)
Loading