]> granicus.if.org Git - python/commitdiff
SF bug #1347874; FeedParser does not comply with RFC2822.
authorBarry Warsaw <barry@python.org>
Tue, 17 Jan 2006 05:58:08 +0000 (05:58 +0000)
committerBarry Warsaw <barry@python.org>
Tue, 17 Jan 2006 05:58:08 +0000 (05:58 +0000)
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.

Lib/email/FeedParser.py
Lib/email/test/test_email.py

index 5aad15dee6633e6b1c5652289288d08a8cd4020e..a2130e276185aaa296f52d527b1529558eb96b39 100644 (file)
@@ -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'
 
index c78e2fd4a5cba63bf06b882fe9cdfee1d98ec87d..c22603df7dbbbf477c212559bc58837ca259dba1 100644 (file)
@@ -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')
+
 
 \f
 class TestBase64(unittest.TestCase):