mirror of https://github.com/python/cpython
Merged revisions 83690 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r83690 | r.david.murray | 2010-08-03 18:14:10 -0400 (Tue, 03 Aug 2010) | 10 lines #3196: if needed pad a short base64 encoded word before trying to decode. The RFCs encourage following Postel's law: be liberal in what you accept. So if someone forgot to pad the base64 encoded word payload to an even four bytes, we add the padding before handing it to base64mime.decode. Previously, missing padding resulted in a HeaderParseError. Patch by Jason Williams. ........
This commit is contained in:
parent
1f0f2785d9
commit
e06528c64b
|
@ -94,6 +94,9 @@ def decode_header(header):
|
||||||
word = email.quoprimime.header_decode(encoded_string)
|
word = email.quoprimime.header_decode(encoded_string)
|
||||||
decoded_words.append((word, charset))
|
decoded_words.append((word, charset))
|
||||||
elif encoding == 'b':
|
elif encoding == 'b':
|
||||||
|
paderr = len(encoded_string) % 4 # Postel's law: add missing padding
|
||||||
|
if paderr:
|
||||||
|
encoded_string += '==='[:4 - paderr]
|
||||||
try:
|
try:
|
||||||
word = email.base64mime.decode(encoded_string)
|
word = email.base64mime.decode(encoded_string)
|
||||||
except binascii.Error:
|
except binascii.Error:
|
||||||
|
|
|
@ -1645,6 +1645,15 @@ Re: =?mac-iceland?q?r=8Aksm=9Arg=8Cs?= baz foo bar =?mac-iceland?q?r=8Aksm?=
|
||||||
(b'rg', None), (b'\xe5', 'iso-8859-1'),
|
(b'rg', None), (b'\xe5', 'iso-8859-1'),
|
||||||
(b'sbord', None)])
|
(b'sbord', None)])
|
||||||
|
|
||||||
|
def test_rfc2047_B_bad_padding(self):
|
||||||
|
s = '=?iso-8859-1?B?%s?='
|
||||||
|
data = [ # only test complete bytes
|
||||||
|
('dm==', b'v'), ('dm=', b'v'), ('dm', b'v'),
|
||||||
|
('dmk=', b'vi'), ('dmk', b'vi')
|
||||||
|
]
|
||||||
|
for q, a in data:
|
||||||
|
dh = decode_header(s % q)
|
||||||
|
self.assertEqual(dh, [(a, 'iso-8859-1')])
|
||||||
|
|
||||||
|
|
||||||
# Test the MIMEMessage class
|
# Test the MIMEMessage class
|
||||||
|
@ -3172,7 +3181,7 @@ A very long line that must get split to something other than at the
|
||||||
|
|
||||||
def test_broken_base64_header(self):
|
def test_broken_base64_header(self):
|
||||||
raises = self.assertRaises
|
raises = self.assertRaises
|
||||||
s = 'Subject: =?EUC-KR?B?CSixpLDtKSC/7Liuvsax4iC6uLmwMcijIKHaILzSwd/H0SC8+LCjwLsgv7W/+Mj3IQ?='
|
s = 'Subject: =?EUC-KR?B?CSixpLDtKSC/7Liuvsax4iC6uLmwMcijIKHaILzSwd/H0SC8+LCjwLsgv7W/+Mj3I ?='
|
||||||
raises(errors.HeaderParseError, decode_header, s)
|
raises(errors.HeaderParseError, decode_header, s)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -817,6 +817,7 @@ Felix Wiemann
|
||||||
Gerry Wiener
|
Gerry Wiener
|
||||||
Frank Wierzbicki
|
Frank Wierzbicki
|
||||||
Bryce "Zooko" Wilcox-O'Hearn
|
Bryce "Zooko" Wilcox-O'Hearn
|
||||||
|
Jason Williams
|
||||||
John Williams
|
John Williams
|
||||||
Sue Williams
|
Sue Williams
|
||||||
Gerald S. Williams
|
Gerald S. Williams
|
||||||
|
|
|
@ -84,6 +84,9 @@ C-API
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #3196: email header decoding is now forgiving if an RFC2047
|
||||||
|
encoded word encoded in base64 is lacking padding.
|
||||||
|
|
||||||
- Issue #8447: Make distutils.sysconfig follow symlinks in the path to
|
- Issue #8447: Make distutils.sysconfig follow symlinks in the path to
|
||||||
the interpreter executable. This fixes a failure of test_httpservers
|
the interpreter executable. This fixes a failure of test_httpservers
|
||||||
on OS X.
|
on OS X.
|
||||||
|
|
Loading…
Reference in New Issue