summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2005-04-05 04:31:09 (GMT)
committerRaymond Hettinger <python@rcn.com>2005-04-05 04:31:09 (GMT)
commitc88a6c75df1e2dac818b63a36db6c8282f4541f7 (patch)
treea499ddd7ac1404c37c21206da7f5e7ca7d7dc4ec
parent714f87821f0f5a84ca43ce640407c15f689fa47c (diff)
downloadcpython-c88a6c75df1e2dac818b63a36db6c8282f4541f7.zip
cpython-c88a6c75df1e2dac818b63a36db6c8282f4541f7.tar.gz
cpython-c88a6c75df1e2dac818b63a36db6c8282f4541f7.tar.bz2
SF bug #1168983: ftplib.py string index out of range
* resp[:1] in '123' # after Py2.2, this allowed blank responses to pass. * replace <> with != * provide a usage message for empty command line calls Backport candidate.
-rw-r--r--Lib/ftplib.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/Lib/ftplib.py b/Lib/ftplib.py
index 9486918..937ee4e 100644
--- a/Lib/ftplib.py
+++ b/Lib/ftplib.py
@@ -208,13 +208,13 @@ class FTP:
if self.debugging: print '*resp*', self.sanitize(resp)
self.lastresp = resp[:3]
c = resp[:1]
+ if c in ('1', '2', '3'):
+ return resp
if c == '4':
raise error_temp, resp
if c == '5':
raise error_perm, resp
- if c not in '123':
- raise error_proto, resp
- return resp
+ raise error_proto, resp
def voidresp(self):
"""Expect a response beginning with '2'."""
@@ -582,17 +582,17 @@ def parse229(resp, peer):
Raises error_proto if it does not contain '(|||port|)'
Return ('host.addr.as.numbers', port#) tuple.'''
- if resp[:3] <> '229':
+ if resp[:3] != '229':
raise error_reply, resp
left = resp.find('(')
if left < 0: raise error_proto, resp
right = resp.find(')', left + 1)
if right < 0:
raise error_proto, resp # should contain '(|||port|)'
- if resp[left + 1] <> resp[right - 1]:
+ if resp[left + 1] != resp[right - 1]:
raise error_proto, resp
parts = resp[left + 1:right].split(resp[left+1])
- if len(parts) <> 5:
+ if len(parts) != 5:
raise error_proto, resp
host = peer[0]
port = int(parts[3])
@@ -755,7 +755,16 @@ class Netrc:
def test():
'''Test program.
- Usage: ftp [-d] [-r[file]] host [-l[dir]] [-d[dir]] [-p] [file] ...'''
+ Usage: ftp [-d] [-r[file]] host [-l[dir]] [-d[dir]] [-p] [file] ...
+
+ -d dir
+ -l list
+ -p password
+ '''
+
+ if len(sys.argv) < 2:
+ print test.__doc__
+ sys.exit(0)
debugging = 0
rcfile = None