From e1415d1282b058e701d41d75e42b0bffed5f8477 Mon Sep 17 00:00:00 2001 From: Frank Tang Date: Wed, 17 Jan 2024 17:26:00 -0800 Subject: [PATCH] ICU-22635 Avoid integer-overflow for invalid large UChar32 --- icu4c/source/common/normalizer2impl.cpp | 10 ++++++++-- icu4c/source/test/intltest/tstnorm.cpp | 4 +++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/icu4c/source/common/normalizer2impl.cpp b/icu4c/source/common/normalizer2impl.cpp index cdf570d76bd..9c715ac3efa 100644 --- a/icu4c/source/common/normalizer2impl.cpp +++ b/icu4c/source/common/normalizer2impl.cpp @@ -1390,8 +1390,11 @@ Normalizer2Impl::composePair(UChar32 a, UChar32 b) const { } else if(norm16composePair(0x20, 0x301)>=0 || nfcNorm2->composePair(0x61, 0x305)>=0 || nfcNorm2->composePair(0x1100, 0x1160)>=0 || - nfcNorm2->composePair(0xac00, 0x11a7)>=0 + nfcNorm2->composePair(0xac00, 0x11a7)>=0 || + nfcNorm2->composePair(0x1100, 0x80000020)>= 0 || // ICU-22635 + nfcNorm2->composePair(0xac00, 0x80000020)>= 0 // ICU-22635 ) { errln("NFC.composePair() incorrectly composes some pairs of characters"); }