This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: urllib2 does not allow for absolute ftp paths
Type: Stage:
Components: None Versions:
process
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: jhylton Nosy List: jhylton, jjlee, loewis, misa
Priority: normal Keywords: patch

Created on 2003-10-03 19:45 by misa, last changed 2022-04-10 16:11 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
python-2.2.2-ftpuri.patch misa, 2003-10-03 19:45 Patch
Messages (5)
msg44735 - (view) Author: Mihai Ibanescu (misa) Date: 2003-10-03 19:45
urllib does the unquote() on FTP paths too early;
therefore, URLs like:

ftp://myname@host.dom/%2Fetc/motd

are unquoted as:

//etc/motd

and then the wrong thing happens.

The correct behaviour is documented in:

http://ietf.org/rfc/rfc1738.txt section 3.2.2 


<quote>
   Within a name or CWD component, the characters "/"
and ";" are
   reserved and must be encoded. The components are
decoded prior to
   their use in the FTP protocol.  In particular, if
the appropriate FTP
   sequence to access a particular file requires
supplying a string
   containing a "/" as an argument to a CWD or RETR
command, it is
   necessary to encode each "/".

   For example, the URL
<URL:ftp://myname@host.dom/%2Fetc/motd> is
   interpreted by FTP-ing to "host.dom", logging in as
"myname"
   (prompting for a password if it is asked for), and
then executing
   "CWD /etc" and then "RETR motd". This has a
different meaning from
   <URL:ftp://myname@host.dom/etc/motd> which would
"CWD etc" and then
   "RETR motd"; the initial "CWD" might be executed
relative to the
   default directory for "myname". On the other hand,
   <URL:ftp://myname@host.dom//etc/motd>, would "CWD "
with a null
   argument, then "CWD etc", and then "RETR motd".
</quote>
msg44736 - (view) Author: Mihai Ibanescu (misa) Date: 2003-10-03 19:48
Logged In: YES 
user_id=205865

Note: patch was generated a long time ago against python
2.2.2, and I was sure I uploaded it to sourceforge. Anyway,
patch still applies cleanly to 2.3.1 urllib2; the bug is
still present in HEAD.
msg44737 - (view) Author: Jeremy Hylton (jhylton) (Python triager) Date: 2003-10-03 20:59
Logged In: YES 
user_id=31392

Sounds like an easy fix.  I'll do it tonight.
msg44738 - (view) Author: John J Lee (jjlee) Date: 2003-11-30 22:26
Logged In: YES 
user_id=261020

This still hasn't been applied.  The patch looks correct to me. 
msg44739 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2004-02-15 20:57
Logged In: YES 
user_id=21627

Thanks for the patch. Committed as urllib2.py 1.61 and
1.53.6.3, NEWS 1.831.4.90.
History
Date User Action Args
2022-04-10 16:11:35adminsetgithub: 39364
2003-10-03 19:45:56misacreate