From f14ee8d1bb0f076e919df01cbdd9059e1e5b9a93 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Sat, 22 Apr 2023 17:55:36 +0000 Subject: Fix [203792a48c]: Avoid signed integer overflow in Utf32ToUtfProc() --- generic/tclEncoding.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 774485d..647ed68 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -2774,9 +2774,9 @@ Utf32ToUtfProc( int prev = ch; if (flags & TCL_ENCODING_LE) { - ch = (src[3] & 0xFF) << 24 | (src[2] & 0xFF) << 16 | (src[1] & 0xFF) << 8 | (src[0] & 0xFF); + ch = (unsigned int)(src[3] & 0xFF) << 24 | (src[2] & 0xFF) << 16 | (src[1] & 0xFF) << 8 | (src[0] & 0xFF); } else { - ch = (src[0] & 0xFF) << 24 | (src[1] & 0xFF) << 16 | (src[2] & 0xFF) << 8 | (src[3] & 0xFF); + ch = (unsigned int)(src[0] & 0xFF) << 24 | (src[1] & 0xFF) << 16 | (src[2] & 0xFF) << 8 | (src[3] & 0xFF); } if (HIGH_SURROGATE(prev) && !LOW_SURROGATE(ch)) { /* Bug [10c2c17c32]. If Hi surrogate not followed by Lo surrogate, finish 3-byte UTF-8 */ -- cgit v0.12