From f1046ca8173380e2c320c56e1cdc911493371057 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Tue, 27 Jul 2010 21:20:15 +0000 Subject: Issue #4770: Restrict binascii module to accept only bytes (as specified). And fix the email package to encode to ASCII instead of ``raw-unicode-escape`` before ASCII-to-binary decoding. --- Lib/email/message.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Lib/email/message.py') diff --git a/Lib/email/message.py b/Lib/email/message.py index 27a577dac7..520d63d713 100644 --- a/Lib/email/message.py +++ b/Lib/email/message.py @@ -198,17 +198,19 @@ class Message: return None cte = self.get('content-transfer-encoding', '').lower() if cte == 'quoted-printable': + if isinstance(payload, str): + payload = payload.encode('ascii') return utils._qdecode(payload) elif cte == 'base64': try: if isinstance(payload, str): - payload = payload.encode('raw-unicode-escape') + payload = payload.encode('ascii') return base64.b64decode(payload) except binascii.Error: # Incorrect padding pass elif cte in ('x-uuencode', 'uuencode', 'uue', 'x-uue'): - in_file = BytesIO(payload.encode('raw-unicode-escape')) + in_file = BytesIO(payload.encode('ascii')) out_file = BytesIO() try: uu.decode(in_file, out_file, quiet=True) -- cgit v1.2.1