From 4d6b89aaefd11eca7999a3bdff537cfcab909e2b Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Mon, 6 Apr 2026 14:47:13 +0100 Subject: [PATCH] Fix UB in `binascii.b2a_ascii85` --- Modules/binascii.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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];