diff options
-rw-r--r-- | Lib/email/feedparser.py | 2 | ||||
-rw-r--r-- | Lib/email/test/test_email.py | 18 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 22 insertions, 1 deletions
diff --git a/Lib/email/feedparser.py b/Lib/email/feedparser.py index afb02b32b2..163fadafd4 100644 --- a/Lib/email/feedparser.py +++ b/Lib/email/feedparser.py @@ -28,7 +28,7 @@ from email import message NLCRE = re.compile('\r\n|\r|\n') NLCRE_bol = re.compile('(\r\n|\r|\n)') -NLCRE_eol = re.compile('(\r\n|\r|\n)$') +NLCRE_eol = re.compile('(\r\n|\r|\n)\Z') 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 ":". diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py index 350d0b0e92..6c23693cf1 100644 --- a/Lib/email/test/test_email.py +++ b/Lib/email/test/test_email.py @@ -2590,6 +2590,24 @@ Here's the message body eq(headers, ['A', 'B', 'CC']) eq(msg.get_payload(), 'body') + def test_CRLFLF_at_end_of_part(self): + # issue 5610: feedparser should not eat two chars from body part ending + # with "\r\n\n". + m = ( + "From: foo@bar.com\n" + "To: baz\n" + "Mime-Version: 1.0\n" + "Content-Type: multipart/mixed; boundary=BOUNDARY\n" + "\n" + "--BOUNDARY\n" + "Content-Type: text/plain\n" + "\n" + "body ending with CRLF newline\r\n" + "\n" + "--BOUNDARY--\n" + ) + msg = email.message_from_string(m) + self.assertTrue(msg.get_payload(0).get_payload().endswith('\r\n')) class TestBase64(unittest.TestCase): @@ -71,6 +71,9 @@ C-API Library ------- +- Issue #5610: feedparser no longer eats extra characters at the end of + a body part if the body part ends with a \r\n. + - Issue #8924: logging: Improved error handling for Unicode in exception text. - Fix codecs.escape_encode to return the correct consumed size. |