diff options
author | Barry Warsaw <barry@python.org> | 2001-11-04 03:04:25 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2001-11-04 03:04:25 (GMT) |
commit | ebf5427bfacae1c0bc497410626cbb3e995dc214 (patch) | |
tree | ae9a0cd8e41dff348d1e48a228566efe51bb6da1 | |
parent | 169ded0d6819f761def726deda19a35c91116674 (diff) | |
download | cpython-ebf5427bfacae1c0bc497410626cbb3e995dc214.zip cpython-ebf5427bfacae1c0bc497410626cbb3e995dc214.tar.gz cpython-ebf5427bfacae1c0bc497410626cbb3e995dc214.tar.bz2 |
Two bug fixes for problems reported by Sverre:
__getaddr(): Watch out for empty addresses that can happen when
something like "MAIL FROM:<CR>" is received. This avoids the
IndexError and rightly returns an SMTP syntax error.
parseargs(): We didn't handle the 2-arg case where both the localspec
and the remotespec were provided on the command line.
-rwxr-xr-x | Lib/smtpd.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Lib/smtpd.py b/Lib/smtpd.py index cf6821f..eb0a9b9 100755 --- a/Lib/smtpd.py +++ b/Lib/smtpd.py @@ -211,7 +211,9 @@ class SMTPChannel(asynchat.async_chat): keylen = len(keyword) if arg[:keylen].upper() == keyword: address = arg[keylen:].strip() - if address[0] == '<' and address[-1] == '>' and address != '<>': + if not address: + pass + elif address[0] == '<' and address[-1] == '>' and address != '<>': # Addresses can be in the form <person@dom.com> but watch out # for null address, e.g. <> address = address[1:-1] @@ -489,6 +491,9 @@ def parseargs(): elif len(args) < 2: localspec = args[0] remotespec = 'localhost:25' + elif len(args) < 3: + localspec = args[0] + remotespec = args[1] else: usage(1, 'Invalid arguments: %s' % COMMASPACE.join(args)) |