From f0db687a28546b85a70fea1ce3b1fd4186693e70 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 6 Jul 2019 14:24:34 +0900 Subject: Avoid crash inside CFCharacterSetIsLongCharacterMember (Bug#36507) * src/macfont.m (macfont_supports_charset_and_languages_p) (macfont_has_char): Don't pass integers outside the Unicode codespace to CFCharacterSetIsLongCharacterMember. Do not merge to master. --- src/macfont.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/macfont.m b/src/macfont.m index 7f153e13045..c9321a7d22e 100644 --- a/src/macfont.m +++ b/src/macfont.m @@ -2070,7 +2070,7 @@ macfont_supports_charset_and_languages_p (CTFontDescriptorRef desc, ptrdiff_t j; for (j = 0; j < ASIZE (chars); j++) - if (TYPE_RANGED_INTEGERP (UTF32Char, AREF (chars, j)) + if (RANGED_INTEGERP (0, AREF (chars, j), MAX_UNICODE_CHAR) && CFCharacterSetIsLongCharacterMember (desc_charset, XFASTINT (AREF (chars, j)))) break; @@ -2705,6 +2705,9 @@ macfont_has_char (Lisp_Object font, int c) int result; CFCharacterSetRef charset; + if (c < 0 || c > MAX_UNICODE_CHAR) + return false; + block_input (); if (FONT_ENTITY_P (font)) { -- cgit v1.2.1