From: Barry Warsaw Date: Mon, 10 Mar 2003 16:13:14 +0000 (+0000) Subject: get_payload(): If we get a low-level binascii.Error when base64 X-Git-Tag: v2.3c1~1500 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=21191d3e31377fff23ea2f71e166f84f3cae1ce8;p=thirdparty%2FPython%2Fcpython.git get_payload(): If we get a low-level binascii.Error when base64 decoding the payload, just return it as-is. --- diff --git a/Lib/email/Message.py b/Lib/email/Message.py index 16ae12082eea..4c6b3dae9b2f 100644 --- a/Lib/email/Message.py +++ b/Lib/email/Message.py @@ -5,13 +5,14 @@ """ import re +import binascii import warnings from cStringIO import StringIO from types import ListType, TupleType, StringType # Intrapackage imports -from email import Errors from email import Utils +from email import Errors from email import Charset SEMISPACE = '; ' @@ -169,9 +170,11 @@ class Message: Content-Transfer-Encoding header. When True and the message is not a multipart, the payload will be decoded if this header's value is `quoted-printable' or `base64'. If some other encoding is used, or - the header is missing, the payload is returned as-is (undecoded). If - the message is a multipart and the decode flag is True, then None is - returned. + the header is missing, or if the payload has bogus base64 data, the + payload is returned as-is (undecoded). + + If the message is a multipart and the decode flag is True, then None + is returned. """ if i is None: payload = self._payload @@ -186,7 +189,11 @@ class Message: if cte.lower() == 'quoted-printable': return Utils._qdecode(payload) elif cte.lower() == 'base64': - return Utils._bdecode(payload) + try: + return Utils._bdecode(payload) + except binascii.Error: + # Incorrect padding + return payload # Everything else, including encodings with 8bit or 7bit are returned # unchanged. return payload