From: Ben Boeckel Date: Tue, 6 Jun 2023 20:50:22 +0000 (-0400) Subject: libcpp: reject codepoints above 0x10FFFF X-Git-Tag: basepoints/gcc-15~8185 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1dbaa6656acc62c586dad1018f06113cde2d8a4;p=thirdparty%2Fgcc.git libcpp: reject codepoints above 0x10FFFF Unicode does not support such values because they are unrepresentable in UTF-16. libcpp/ * charset.cc: Reject encodings of codepoints above 0x10FFFF. UTF-16 does not support such codepoints and therefore all Unicode rejects such values. Signed-off-by: Ben Boeckel --- diff --git a/libcpp/charset.cc b/libcpp/charset.cc index d7f323b2cd52..d4f573e365f0 100644 --- a/libcpp/charset.cc +++ b/libcpp/charset.cc @@ -1886,6 +1886,13 @@ cpp_valid_utf8_p (const char *buffer, size_t num_bytes) int err = one_utf8_to_cppchar (&iter, &bytesleft, &cp); if (err) return false; + + /* Additionally, Unicode declares that all codepoints above 0010FFFF are + invalid because they cannot be represented in UTF-16. + + Reject such values.*/ + if (cp >= UCS_LIMIT) + return false; } /* No problems encountered. */ return true;