Skip to content

Commit 2a875f9

Browse files
committed
email._encoded_words: work-around for missing validate kwarg with base64.b64decode() on Py2.x
1 parent 20a6847 commit 2a875f9

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

future/standard_library/email/_encoded_words.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,10 @@ def decode_b(encoded):
113113
else:
114114
padded_encoded = encoded
115115
try:
116-
return base64.b64decode(padded_encoded, validate=True), defects
116+
# The validate kwarg to b64decode is not supported in Py2.x
117+
if not re.match(b'^[A-Za-z0-9+/]*={0,2}$', padded_encoded):
118+
raise binascii.Error('Non-base64 digit found')
119+
return base64.b64decode(padded_encoded), defects
117120
except binascii.Error:
118121
# Since we had correct padding, this must an invalid char error.
119122
defects = [errors.InvalidBase64CharactersDefect()]
@@ -123,7 +126,7 @@ def decode_b(encoded):
123126
for i in 0, 1, 2, 3:
124127
try:
125128
return base64.b64decode(encoded+b'='*i), defects
126-
except binascii.Error:
129+
except (binascii.Error, TypeError): # Py2 raises a TypeError
127130
if i==0:
128131
defects.append(errors.InvalidBase64PaddingDefect())
129132
else:

0 commit comments

Comments
 (0)