From: Stan Ulbrych Date: Tue, 7 Apr 2026 07:44:03 +0000 (+0100) Subject: gh-101178: Fix UB in `binascii.b2a_ascii85` (#148166) X-Git-Tag: v3.15.0a8~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=63d3c490d4ebb38104dd5b42ab3117c35ee9c743;p=thirdparty%2FPython%2Fcpython.git gh-101178: Fix UB in `binascii.b2a_ascii85` (#148166) --- diff --git a/Modules/binascii.c b/Modules/binascii.c index 9193137877ae..b80bfbfffe43 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];