summaryrefslogtreecommitdiff
path: root/Lib
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2006-01-17 05:58:08 +0000
committerBarry Warsaw <barry@python.org>2006-01-17 05:58:08 +0000
commit615320127428bc97c1e1dd96cf4ac5c8f407554c (patch)
tree2723d3bd37fc10c461e84038c0bf6fc4829277cc /Lib
parent20bad74d6394a0e9ee82d776b8e4b93de352214a (diff)
downloadcpython-git-615320127428bc97c1e1dd96cf4ac5c8f407554c.tar.gz
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.py4
-rw-r--r--Lib/email/test/test_email.py9
2 files changed, 11 insertions, 2 deletions
diff --git a/Lib/email/FeedParser.py b/Lib/email/FeedParser.py
index 5aad15dee6..a2130e2761 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 c78e2fd4a5..c22603df7d 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):