summaryrefslogtreecommitdiffstats
path: root/Lib/email/message.py
diff options
context:
space:
mode:
authorFlorent Xicluna <florent.xicluna@gmail.com>2010-07-27 21:20:15 (GMT)
committerFlorent Xicluna <florent.xicluna@gmail.com>2010-07-27 21:20:15 (GMT)
commitf1046ca8173380e2c320c56e1cdc911493371057 (patch)
treec3eabb51cc16a958e1fd1ca6700036d8b365d48b /Lib/email/message.py
parent4bf70686fab91dcc5603c11c36f77bd2131ff6ed (diff)
downloadcpython-f1046ca8173380e2c320c56e1cdc911493371057.zip
cpython-f1046ca8173380e2c320c56e1cdc911493371057.tar.gz
cpython-f1046ca8173380e2c320c56e1cdc911493371057.tar.bz2
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.
Diffstat (limited to 'Lib/email/message.py')
-rw-r--r--Lib/email/message.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/Lib/email/message.py b/Lib/email/message.py
index 27a577d..520d63d 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)