From ebf5427bfacae1c0bc497410626cbb3e995dc214 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Sun, 4 Nov 2001 03:04:25 +0000 Subject: [PATCH] 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. --- Lib/smtpd.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Lib/smtpd.py b/Lib/smtpd.py index cf6821f2ba9..eb0a9b91f3c 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))