https://github.com/python/cpython/commit/63d3c490d4ebb38104dd5b42ab3117c35ee9c743
commit: 63d3c490d4ebb38104dd5b42ab3117c35ee9c743
branch: main
author: Stan Ulbrych <[email protected]>
committer: StanFromIreland <[email protected]>
date: 2026-04-07T08:44:03+01:00
summary:
gh-101178: Fix UB in `binascii.b2a_ascii85` (#148166)
files:
M Modules/binascii.c
diff --git a/Modules/binascii.c b/Modules/binascii.c
index 9193137877aef9..b80bfbfffe430c 100644
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -1240,7 +1240,7 @@ binascii_b2a_ascii85_impl(PyObject *module, Py_buffer
*data, int foldspaces,
/* Encode all full-length chunks. */
for (; bin_len >= 4; bin_len -= 4, bin_data += 4) {
- uint32_t leftchar = (bin_data[0] << 24) | (bin_data[1] << 16) |
+ uint32_t leftchar = ((uint32_t)bin_data[0] << 24) | (bin_data[1] <<
16) |
(bin_data[2] << 8) | bin_data[3];
if (leftchar == BASE85_A85_Z) {
*ascii_data++ = 'z';
@@ -1481,7 +1481,7 @@ binascii_b2a_base85_impl(PyObject *module, Py_buffer
*data, int pad,
/* Encode all full-length chunks. */
for (; bin_len >= 4; bin_len -= 4, bin_data += 4) {
- uint32_t leftchar = (bin_data[0] << 24) | (bin_data[1] << 16) |
+ uint32_t leftchar = ((uint32_t)bin_data[0] << 24) | (bin_data[1] <<
16) |
(bin_data[2] << 8) | bin_data[3];
ascii_data[4] = table_b2a[leftchar % 85];
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]