summaryrefslogtreecommitdiffstats
path: root/Lib/email
diff options
context:
space:
mode:
authorR. David Murray <rdmurray@bitdance.com>2010-10-01 15:40:20 (GMT)
committerR. David Murray <rdmurray@bitdance.com>2010-10-01 15:40:20 (GMT)
commit31e984c39cc7171f58878f772d0c9ad234893b2a (patch)
treec3cc50005e222313444af663ef8328ee4fc143ce /Lib/email
parent9e88b5aeee219c8b1968a29f206231cca2719ed3 (diff)
downloadcpython-31e984c39cc7171f58878f772d0c9ad234893b2a.zip
cpython-31e984c39cc7171f58878f772d0c9ad234893b2a.tar.gz
cpython-31e984c39cc7171f58878f772d0c9ad234893b2a.tar.bz2
#10004: in Q encoded word ignore '=xx' when xx is not valid hex.
Bug report and fix by Thomas Guettler.
Diffstat (limited to 'Lib/email')
-rw-r--r--Lib/email/quoprimime.py2
-rw-r--r--Lib/email/test/test_email.py6
2 files changed, 7 insertions, 1 deletions
diff --git a/Lib/email/quoprimime.py b/Lib/email/quoprimime.py
index 12df028..168dfff 100644
--- a/Lib/email/quoprimime.py
+++ b/Lib/email/quoprimime.py
@@ -294,4 +294,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, re.ASCII)
+ return re.sub(r'=[a-fA-F0-9]{2}', _unquote_match, s, re.ASCII)
diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py
index e18ffaf..b6e4831 100644
--- a/Lib/email/test/test_email.py
+++ b/Lib/email/test/test_email.py
@@ -1659,6 +1659,12 @@ Re: =?mac-iceland?q?r=8Aksm=9Arg=8Cs?= baz foo bar =?mac-iceland?q?r=8Aksm?=
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):