diff options
author | Florent Xicluna <florent.xicluna@gmail.com> | 2010-07-27 21:20:15 (GMT) |
---|---|---|
committer | Florent Xicluna <florent.xicluna@gmail.com> | 2010-07-27 21:20:15 (GMT) |
commit | f1046ca8173380e2c320c56e1cdc911493371057 (patch) | |
tree | c3eabb51cc16a958e1fd1ca6700036d8b365d48b /Lib/email/message.py | |
parent | 4bf70686fab91dcc5603c11c36f77bd2131ff6ed (diff) | |
download | cpython-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.py | 6 |
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) |