From: Stephen Finucane Date: Mon, 18 Apr 2016 10:21:09 +0000 (+0100) Subject: parser: Correct empty email value check X-Git-Tag: v2.0.0-rc1~262 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df6dada6bed15216950fb3e8ccf2c1f30c688038;p=thirdparty%2Fpatchwork.git parser: Correct empty email value check The check for empty emails in 'find_author' checked for None, but it was not possible to ever return None unless the 'From:' header was missing altogether. Seeing as, per RFC822 and its revisions, this is not possible, check for the empty string instead. Signed-off-by: Stephen Finucane Reviewed-by: Andy Doan --- diff --git a/patchwork/parser.py b/patchwork/parser.py index cadfe74b..1805df8c 100644 --- a/patchwork/parser.py +++ b/patchwork/parser.py @@ -107,6 +107,8 @@ def find_author(mail): # tuple of (regex, fn) # - where fn returns a (name, email) tuple from the match groups resulting # from re.match().groups() + # TODO(stephenfin): Perhaps we should check for "real" email addresses + # instead of anything ('.*?') from_res = [ # for "Firstname Lastname" style addresses (re.compile(r'"?(.*?)"?\s*<([^>]+)>'), (lambda g: (g[0], g[1]))), @@ -128,7 +130,7 @@ def find_author(mail): (name, email) = fn(match.groups()) break - if email is None: + if not email: raise ValueError("Invalid 'From' header") email = email.strip() diff --git a/patchwork/tests/test_parser.py b/patchwork/tests/test_parser.py index 3ca049bd..7b5c71bb 100644 --- a/patchwork/tests/test_parser.py +++ b/patchwork/tests/test_parser.py @@ -228,6 +228,11 @@ class SenderEncodingTest(TestCase): db_person = Person.objects.get(email=sender_email) self.assertEqual(person, db_person) + def test_empty(self): + email = self._create_email('') + with self.assertRaises(ValueError): + find_author(email) + def test_ascii_encoding(self): from_header = 'example user ' sender_name = u'example user'