GeezerVison is showing github.com — `binascii.a2b_base64` ignores padding inside a string · Issue #94703 · python/cpython
binascii.a2b_base64 ignores padding inside a string #94703
Description
Bug report
The following code should raise binascii.Error but does not:
import binascii
binascii.a2b_base64(b'=aa==')
It appears (from looking at the source code) that this is also the case in 3.11, even in strict mode.
Your environment
- CPython versions tested on: 3.10
- Operating system and architecture: Fedora 36, Linux 5.15.52, x86_64
Activityyourlefthandman commented on Jul 9, 2022 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 DemiMarie commented on Jul 10, 2022 Does it reject this input?
import binascii
binascii.a2b_base64(b'aaaa=aa==', strict_mode=True)
? yourlefthandman commented on Jul 10, 2022 Yup :)
>>> import binascii
>>> 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
Mohitduklan commented on Jul 24, 2022 idan22moral commented on Nov 4, 2022 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
For further information, please read:
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|