summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/email/feedparser.py2
-rw-r--r--Lib/email/test/test_email.py18
-rw-r--r--Misc/NEWS3
3 files changed, 22 insertions, 1 deletions
diff --git a/Lib/email/feedparser.py b/Lib/email/feedparser.py
index bff17ba..a6853c2 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 79146a3..be0565e 100644
--- a/Lib/email/test/test_email.py
+++ b/Lib/email/test/test_email.py
@@ -2588,6 +2588,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):
diff --git a/Misc/NEWS b/Misc/NEWS
index f41096a..7817276 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -432,6 +432,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 #8986: math.erfc was incorrectly raising OverflowError for
values between -27.3 and -30.0 on some platforms.