File tree Expand file tree Collapse file tree
future/standard_library/email Expand file tree Collapse file tree Original file line number Diff line number Diff 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 :
You can’t perform that action at this time.
0 commit comments