You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
binascii.a2b_base64 ignores padding inside a string #94703
When running the code from main, the behaviour is as you expect it to be :)
>>> binascii.a2b_base64(b'=aa==', strict_mode=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
binascii.Error: Leading padding not allowed
The following code handles it-
if (strict_mode && ascii_len > 0 && ascii_data[0] == '=') {
state = get_binascii_state(module);
if (state) {
PyErr_SetString(state->Error, "Leading padding not allowed");
}
goto error_end;
}
Looking at 3.11, i see the code is there too - link
Hi @DemiMarie,
This behavior is normal in 3.10, since the strict_mode flag was not introduced yet.
In 3.11.0 it behaves as expected:
Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import binascii
>>> binascii.a2b_base64(b'=aa==')
b'i'
>>> binascii.a2b_base64(b'=aa==', strict_mode=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
binascii.Error: Leading padding not allowed
>>> binascii.a2b_base64(b'aaaa=aa==')
b'i\xa6\x9ai'
>>> binascii.a2b_base64(b'aaaa=aa==', strict_mode=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
binascii.Error: Discontinuous padding not allowed
Activity
yourlefthandman commentedon Jul 9, 2022
When running the code from main, the behaviour is as you expect it to be :)
The following code handles it-
Looking at 3.11, i see the code is there too - link
DemiMarie commentedon Jul 10, 2022
Does it reject this input?
?
yourlefthandman commentedon Jul 10, 2022
Yup :)
Mohitduklan commentedon Jul 24, 2022
Is it because python 3.10.5 uses REF 4648. https://docs.python.org/3/library/base64.html
idan22moral commentedon Nov 4, 2022
Hi @DemiMarie,
This behavior is normal in 3.10, since the
strict_modeflag was not introduced yet.In 3.11.0 it behaves as expected:
For further information, please read: