From 57a4b983a66ec5cd9b5af37cb6095cfc188f053a Mon Sep 17 00:00:00 2001 From: "R. David Murray" Date: Mon, 8 Mar 2010 02:17:03 +0000 Subject: [PATCH] bdecode was already gone in email 5. This merge adds the test from the trunk patch, and removes the last trace of bdecode, which was a commented out call in message.py. Merged revisions 78778 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r78778 | r.david.murray | 2010-03-07 21:04:06 -0500 (Sun, 07 Mar 2010) | 9 lines Issue #7143: get_payload used to strip any trailing newline from a base64 transfer-encoded payload *after* decoding it; it no longer does. email had a special method in utils, _bdecode, specifically to do this, so it must have served a purpose at some point, yet it is clearly wrong per RFC. Fixed with Barry's approval, but no backport. Email package minor version number is bumped, now version 4.0.1. Patch by Joaquin Cuenca Abela. ........ --- Lib/email/message.py | 1 - Lib/email/test/data/msg_10.txt | 7 +++++++ Lib/email/test/test_email.py | 6 +++++- Misc/ACKS | 1 + 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Lib/email/message.py b/Lib/email/message.py index d89e37e0b61..3608d1a9597 100644 --- a/Lib/email/message.py +++ b/Lib/email/message.py @@ -204,7 +204,6 @@ class Message: if isinstance(payload, str): payload = payload.encode('raw-unicode-escape') return base64.b64decode(payload) - #return utils._bdecode(payload) except binascii.Error: # Incorrect padding pass diff --git a/Lib/email/test/data/msg_10.txt b/Lib/email/test/data/msg_10.txt index bd30d13ad1a..07903960f9f 100644 --- a/Lib/email/test/data/msg_10.txt +++ b/Lib/email/test/data/msg_10.txt @@ -24,6 +24,13 @@ Content-Transfer-Encoding: Base64 VGhpcyBpcyBhIEJhc2U2NCBlbmNvZGVkIG1lc3NhZ2Uu +--BOUNDARY +Content-Type: text/plain; charset="iso-8859-1" +Content-Transfer-Encoding: Base64 + +VGhpcyBpcyBhIEJhc2U2NCBlbmNvZGVkIG1lc3NhZ2UuCg== + + --BOUNDARY Content-Type: text/plain; charset="iso-8859-1" diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py index 27ddc7c58aa..5e4d9ba149f 100644 --- a/Lib/email/test/test_email.py +++ b/Lib/email/test/test_email.py @@ -204,8 +204,12 @@ class TestMessageAPI(TestEmailBase): # Subpart 3 is base64 eq(msg.get_payload(2).get_payload(decode=True), b'This is a Base64 encoded message.') - # Subpart 4 has no Content-Transfer-Encoding: header. + # Subpart 4 is base64 with a trailing newline, which + # used to be stripped (issue 7143). eq(msg.get_payload(3).get_payload(decode=True), + b'This is a Base64 encoded message.\n') + # Subpart 5 has no Content-Transfer-Encoding: header. + eq(msg.get_payload(4).get_payload(decode=True), b'This has no Content-Transfer-Encoding: header.\n') def test_get_decoded_uu_payload(self): diff --git a/Misc/ACKS b/Misc/ACKS index 8342bf94faf..ec15267d240 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -9,6 +9,7 @@ Without you, I would've stopped working on Python long ago! PS: In the standard Python distribution, this file is encoded in UTF-8. +Joaquin Cuenca Abela David Abrahams Jim Ahlstrom Farhan Ahmad