From: Barry Warsaw Date: Sun, 4 Nov 2001 03:04:25 +0000 (+0000) Subject: Two bug fixes for problems reported by Sverre: X-Git-Tag: v2.2.1c1~882 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ebf5427bfacae1c0bc497410626cbb3e995dc214;p=python Two bug fixes for problems reported by Sverre: __getaddr(): Watch out for empty addresses that can happen when something like "MAIL FROM:" 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. --- diff --git a/Lib/smtpd.py b/Lib/smtpd.py index cf6821f2ba..eb0a9b91f3 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 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))