diff options
author | R. David Murray <rdmurray@bitdance.com> | 2010-10-01 15:48:49 +0000 |
---|---|---|
committer | R. David Murray <rdmurray@bitdance.com> | 2010-10-01 15:48:49 +0000 |
commit | 20ad3634af3dda11f71189f0997e4aa832a5c740 (patch) | |
tree | 4e1ee7c0e702671bd16b2c1e0393692aa26c8bd0 | |
parent | cb5e22deff0823dd9ef2fa3cf4f35dc9c5f92285 (diff) | |
download | cpython-git-20ad3634af3dda11f71189f0997e4aa832a5c740.tar.gz |
Merged revisions 85142 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r85142 | r.david.murray | 2010-10-01 11:40:20 -0400 (Fri, 01 Oct 2010) | 5 lines
#10004: in Q encoded word ignore '=xx' when xx is not valid hex.
Bug report and fix by Thomas Guettler.
........
-rw-r--r-- | Lib/email/quoprimime.py | 2 | ||||
-rw-r--r-- | Lib/email/test/test_email.py | 6 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 10 insertions, 1 deletions
diff --git a/Lib/email/quoprimime.py b/Lib/email/quoprimime.py index b9dbfa97e0..0c18a9e04e 100644 --- a/Lib/email/quoprimime.py +++ b/Lib/email/quoprimime.py @@ -333,4 +333,4 @@ def header_decode(s): the high level email.header class for that functionality. """ s = s.replace('_', ' ') - return re.sub(r'=\w{2}', _unquote_match, s) + return re.sub(r'=[a-fA-F0-9]{2}', _unquote_match, s) diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py index 300fc21711..c3610bf6e2 100644 --- a/Lib/email/test/test_email.py +++ b/Lib/email/test/test_email.py @@ -1621,6 +1621,12 @@ class TestRFC2047(unittest.TestCase): dh = decode_header(s % q) self.assertEqual(dh, [(a, 'iso-8859-1')]) + def test_rfc2047_Q_invalid_digits(self): + # issue 10004. + s = '=?iso-8659-1?Q?andr=e9=zz?=' + self.assertEqual(decode_header(s), + [(b'andr\xe9=zz', 'iso-8659-1')]) + # Test the MIMEMessage class class TestMIMEMessage(TestEmailBase): @@ -48,6 +48,9 @@ Core and Builtins Library ------- +- Issue #10004: quoprimime no longer generates a traceback when confronted + with invalid characters after '=' in a Q-encoded word. + - Issue #9950: Fix socket.sendall() crash or misbehaviour when a signal is received. Now sendall() properly calls signal handlers if necessary, and retries sending if these returned successfully, including on sockets |