From bdaca6afc6bc7b9a92f0fa6a1a2c18fb7da7bb54 Mon Sep 17 00:00:00 2001 From: Oldes Date: Sat, 31 Oct 2020 13:02:38 +0100 Subject: [PATCH] FIX: Crash when loading specially crafted binary fixes: https://github.com/Oldes/Rebol-issues/issues/2435 --- src/core/s-crc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/s-crc.c b/src/core/s-crc.c index 77b7eb14e0..7a01a96130 100644 --- a/src/core/s-crc.c +++ b/src/core/s-crc.c @@ -169,7 +169,11 @@ static REBCNT *CRC32_Table = 0; for (; ulen > 0; str++, ulen--) { n = *str; - if (n > 127 && NZ(m = Decode_UTF8_Char(&str, &ulen))) n = m; // mods str, ulen + if (n > 127) { + m = Decode_UTF8_Char(&str, &ulen); // mods str, ulen + if (!m) Trap0(RE_INVALID_CHARS); + n = m; + } if (n < UNICODE_CASES) n = LO_CASE(n); n = (REBYTE)((hash >> CRCSHIFTS) ^ (REBYTE)n); // drop upper 8 bits hash = MASK_CRC(hash << 8) ^ (REBINT)CRC24_Table[n];