From fc3c5dae87b74186b99e00a16fbd2e4f7a32a9d1 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 19 Jun 2007 12:33:28 +0000 Subject: [PATCH] and fix another flaw in the singlecwd case when we get ftp://site.com/, also from the #1739100 bug report --- lib/ftp.c | 8 +++++- tests/data/Makefile.am | 2 +- tests/data/test353 | 56 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 tests/data/test353 diff --git a/lib/ftp.c b/lib/ftp.c index ce14a49200..30de32f984 100644 --- a/lib/ftp.c +++ b/lib/ftp.c @@ -3691,6 +3691,12 @@ CURLcode ftp_parse_url_path(struct connectdata *conn) case FTPFILE_SINGLECWD: /* get the last slash */ + if(!path_to_use[0]) { + /* no dir, no file */ + ftpc->dirdepth = 0; + ftp->file = NULL; + break; + } slash_pos=strrchr(cur_pos, '/'); if(slash_pos || !*cur_pos) { ftpc->dirs = (char **)calloc(1, sizeof(ftpc->dirs[0])); @@ -3773,7 +3779,7 @@ CURLcode ftp_parse_url_path(struct connectdata *conn) ftp->file = cur_pos; /* the rest is the file name */ } - if(*ftp->file) { + if(ftp->file && *ftp->file) { ftp->file = curl_easy_unescape(conn->data, ftp->file, 0, NULL); if(NULL == ftp->file) { freedirs(conn); diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 8fc8fbc625..f18df11b54 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -42,4 +42,4 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test405 test604 test605 test606 test607 test608 test609 test294 test295 \ test296 test297 test298 test610 test611 test612 test406 test407 test408 \ test409 test613 test614 test700 test701 test702 test704 test705 test703 \ - test706 test707 test350 test351 test352 + test706 test707 test350 test351 test352 test353 diff --git a/tests/data/test353 b/tests/data/test353 new file mode 100644 index 0000000000..417b8c3eaa --- /dev/null +++ b/tests/data/test353 @@ -0,0 +1,56 @@ + + + +FTP +PASV +LIST + + +# +# Server-side + +# When doing LIST, we get the default list output hard-coded in the test +# FTP server + +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 + + + +# +# Client-side + + +ftp + + +FTP home dir list singlecwd + + +ftp://%HOSTIP:%FTPPORT/ --ftp-method singlecwd + + + +# +# Verify data after the test has been "shot" + + +USER anonymous +PASS ftp@example.com +PWD +EPSV +TYPE A +LIST +QUIT + + +