From: Barry Warsaw Date: Tue, 17 Jan 2006 05:59:18 +0000 (+0000) Subject: SF bug #1347874; FeedParser does not comply with RFC2822. X-Git-Tag: v2.4.3c1~131 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=aad2234bfaa6c1f0bfa8251e9b2d1685377336f5;p=thirdparty%2FPython%2Fcpython.git SF bug #1347874; FeedParser does not comply with RFC2822. Change headerRE as suggested in the bug report, so that single character headers are accepted. Test case added too. Backported from the trunk. --- diff --git a/Lib/email/FeedParser.py b/Lib/email/FeedParser.py index 5aad15dee663..a2130e276185 100644 --- a/Lib/email/FeedParser.py +++ b/Lib/email/FeedParser.py @@ -1,4 +1,4 @@ -# Copyright (C) 2004 Python Software Foundation +# Copyright (C) 2004-2006 Python Software Foundation # Authors: Baxter, Wouters and Warsaw # Contact: email-sig@python.org @@ -29,7 +29,7 @@ NLCRE_eol = re.compile('(\r\n|\r|\n)$') NLCRE_crack = re.compile('(\r\n|\r|\n)') # RFC 2822 $3.6.8 Optional fields. ftext is %d33-57 / %d59-126, Any character # except controls, SP, and ":". -headerRE = re.compile(r'^(From |[\041-\071\073-\176]{2,}:|[\t ])') +headerRE = re.compile(r'^(From |[\041-\071\073-\176]{1,}:|[\t ])') EMPTYSTRING = '' NL = '\n' diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py index c78e2fd4a5cb..c22603df7dbb 100644 --- a/Lib/email/test/test_email.py +++ b/Lib/email/test/test_email.py @@ -2467,6 +2467,15 @@ Here's the message body msg = email.message_from_string(m) eq(len(msg.keys()), 0) + def test_rfc2822_one_character_header(self): + eq = self.assertEqual + m = 'A: first header\nB: second header\nCC: third header\n\nbody' + msg = email.message_from_string(m) + headers = msg.keys() + headers.sort() + eq(headers, ['A', 'B', 'CC']) + eq(msg.get_payload(), 'body') + class TestBase64(unittest.TestCase):