diff options
author | Barry Warsaw <barry@python.org> | 2006-01-17 05:58:08 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2006-01-17 05:58:08 (GMT) |
commit | 615320127428bc97c1e1dd96cf4ac5c8f407554c (patch) | |
tree | 2723d3bd37fc10c461e84038c0bf6fc4829277cc /Lib | |
parent | 20bad74d6394a0e9ee82d776b8e4b93de352214a (diff) | |
download | cpython-615320127428bc97c1e1dd96cf4ac5c8f407554c.zip cpython-615320127428bc97c1e1dd96cf4ac5c8f407554c.tar.gz cpython-615320127428bc97c1e1dd96cf4ac5c8f407554c.tar.bz2 |
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. Will backport to Python 2.4.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/email/FeedParser.py | 4 | ||||
-rw-r--r-- | Lib/email/test/test_email.py | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/Lib/email/FeedParser.py b/Lib/email/FeedParser.py index 5aad15d..a2130e2 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 c78e2fd..c22603d 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): |