[Python-checkins] r85142 - in python/branches/py3k: Lib/email/quoprimime.py Lib/email/test/test_email.py Misc/NEWS

r.david.murray python-checkins at python.org
Fri Oct 1 17:40:20 CEST 2010


Author: r.david.murray
Date: Fri Oct  1 17:40:20 2010
New Revision: 85142

Log:
#10004: in Q encoded word ignore '=xx' when xx is not valid hex.

Bug report and fix by Thomas Guettler.



Modified:
   python/branches/py3k/Lib/email/quoprimime.py
   python/branches/py3k/Lib/email/test/test_email.py
   python/branches/py3k/Misc/NEWS

Modified: python/branches/py3k/Lib/email/quoprimime.py
==============================================================================
--- python/branches/py3k/Lib/email/quoprimime.py	(original)
+++ python/branches/py3k/Lib/email/quoprimime.py	Fri Oct  1 17:40:20 2010
@@ -294,4 +294,4 @@
     the high level email.header class for that functionality.
     """
     s = s.replace('_', ' ')
-    return re.sub(r'=\w{2}', _unquote_match, s, re.ASCII)
+    return re.sub(r'=[a-fA-F0-9]{2}', _unquote_match, s, re.ASCII)

Modified: python/branches/py3k/Lib/email/test/test_email.py
==============================================================================
--- python/branches/py3k/Lib/email/test/test_email.py	(original)
+++ python/branches/py3k/Lib/email/test/test_email.py	Fri Oct  1 17:40:20 2010
@@ -1659,6 +1659,12 @@
             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):

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Fri Oct  1 17:40:20 2010
@@ -79,6 +79,9 @@
 Library
 -------
 
+- Issue #10004: quoprimime no longer generates a traceback when confronted
+  with invalid characters after '=' in a Q-encoded word.
+
 - Issue #1491: BaseHTTPServer nows send a 100 Continue response before sending
   a 200 OK for the Expect: 100-continue request header.
 


More information about the Python-checkins mailing list