cURL
Haxx ad
libcurl

curl's project page on SourceForge.net

Sponsors:
Haxx

cURL > Mailing List > Monthly Index > Single Mail

curl-tracker mailing list Archives

[ curl-Bugs-1739100 ] Double slashes and root dir

From: SourceForge.net <noreply_at_sourceforge.net>
Date: Mon, 18 Jun 2007 15:01:05 -0700

Bugs item #1739100, was opened at 2007-06-18 11:25
Message generated for change (Comment added) made by braga
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=100976&aid=1739100&group_id=976

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: ftp
Group: bad behaviour
Status: Open
Resolution: Fixed
Priority: 6
Private: No
Submitted By: Robson Braga Araujo (braga)
Assigned to: Daniel Stenberg (bagder)
Summary: Double slashes and root dir

Initial Comment:
Know bug number 6 states:
libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that such parts should be sent to the server as 'CWD ' (without an argument). The only exception to this rule, is that we knowingly break this if the empty part is first in the path, as then we use the double slashes to indicate that the user wants to reach the root dir (this exception SHALL remain even when this bug is fixed).

I think this means libcurl will ignore double slashes unless it's the first in the path, which will bring us to the root dir. But that's not what is happening. libcurl is always ignoring the double slashes leaving us with no way to list the root directory. (Except .. hacks)

----------------------------------------------------------------------

>Comment By: Robson Braga Araujo (braga)
Date: 2007-06-18 19:01

Message:
Logged In: YES
user_id=307089
Originator: YES

Also, if you use CURLFTPMETHOD_NOCWD, libcurl always does a SIZE and a
RETR, even if the url points to a directory.

----------------------------------------------------------------------

Comment By: Robson Braga Araujo (braga)
Date: 2007-06-18 18:58

Message:
Logged In: YES
user_id=307089
Originator: YES

Thanks for fixing.

> Funnily enough, the bug does not appear when using
> --ftp-method singlecwd

This is a bug too. If you use --ftp-method singlecwd, libcurl always sets
the path to /, despite an extra slash or not, instead of leaving you in the
default dir.

----------------------------------------------------------------------

Comment By: Daniel Stenberg (bagder)
Date: 2007-06-18 18:06

Message:
Logged In: YES
user_id=1110
Originator: NO

I've committed fix for this now, and two test cases.

----------------------------------------------------------------------

Comment By: Daniel Stenberg (bagder)
Date: 2007-06-18 14:46

Message:
Logged In: YES
user_id=1110
Originator: NO

I get it now. Funnily enough, the bug does not appear when using
--ftp-method singlecwd

----------------------------------------------------------------------

Comment By: Robson Braga Araujo (braga)
Date: 2007-06-18 14:38

Message:
Logged In: YES
user_id=307089
Originator: YES

ftp://ftp.sunet.se// gets the root dir because ftp.sunet.se doesn't
redirect you to a default dir. You can try it with curl -v and see that
there is no CWD / command being issued. I can reproduce it locally with a
FTP server that I configured:

$ curl -v ftp://robson@localhost//
* About to connect() to localhost port 21 (#0)
* Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 21 (#0)
< 220 ProFTPD 1.3.1rc2 Server (ProFTPD Default Installation) [127.0.0.1]
> USER robson
< 331 Anonymous login ok, send your complete email address as your
password
> PASS
< 230 Anonymous access granted, restrictions apply
> PWD
< 257 "/ssh" is the current directory
* Entry path is '/ssh'
> EPSV
* Connect data stream passively
< 229 Entering Extended Passive Mode (|||46110|)
* Trying 127.0.0.1... connected
* Connecting to 127.0.0.1 (127.0.0.1) port 46110
> TYPE A
< 200 Type set to A
> LIST
< 150 Opening ASCII mode data connection for file list
* Maxdownload = -1
* Remembering we are in dir /
< 226 Transfer complete
* Connection #0 to host localhost left intact
* Curl_disconnect
> QUIT
< 221 Goodbye.
* Closing connection #0

It is listing /ssh directory instead of the / directory.

----------------------------------------------------------------------

Comment By: Daniel Stenberg (bagder)
Date: 2007-06-18 14:25

Message:
Logged In: YES
user_id=1110
Originator: NO

Sorry, but can you tell me what the problem is with this.
ftp://ftp.sunet.se// gets the root dir for you.

> Using ftp://ftp.sunet.se/%2F works well.

Actually, that does NOT work well I would say as that will make curl issue
"RETR /" which is plain wrong.

But ok, please confirm the following: I guess the problem here is you want
to list the root dir of an FTP server that doesn't let you in in the root
dir as default and you say this doesn't work? If it is, do you know of a
public server that you can repeat the problem with with a complete command
line?

(I guess you've said this all along but I haven't understood it)

----------------------------------------------------------------------

Comment By: Robson Braga Araujo (braga)
Date: 2007-06-18 12:36

Message:
Logged In: YES
user_id=307089
Originator: YES

This indeed works. But if you try just ftp://ftp.sunet.se// you won't be
changed to the root dir. ftp.sunet.se doesn't have a default home dir, but
you can see that there is no CWD / command given. Using
ftp://ftp.sunet.se/%2F works well.

I tried with curl-7.16.2.

----------------------------------------------------------------------

Comment By: Daniel Stenberg (bagder)
Date: 2007-06-18 11:49

Message:
Logged In: YES
user_id=1110
Originator: NO

I can't repeat (or possibly understand) your problem:

I take it you use 7.16.2 or a recent CVS?

I tried with both doing this:

$ curl ftp://ftp.sunet.se//lib/ -v

And both versions jump to the directory "/lib" that is based on the root
dir of the server, not the home dir where it logs in.

I also tried the more official way of doing it, by specifying %2f instead
of the double slash, it it too worked with both these versions:

$ curl ftp://ftp.sunet.se/%2flib/ -v

----------------------------------------------------------------------

You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=100976&aid=1739100&group_id=976
Received on 2007-06-19

These mail archives are generated by hypermail.

donate! Page updated November 12, 2010.
web site info

File upload with ASP.NET