]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid crash inside CFCharacterSetIsLongCharacterMember (Bug#36507)
authorYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Sat, 6 Jul 2019 05:24:34 +0000 (14:24 +0900)
committerYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Sat, 6 Jul 2019 05:24:34 +0000 (14:24 +0900)
* 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

index 7f153e13045358b11f76acbe86db9ccd0f673eb0..c9321a7d22ea744fd34a3f50f2bc2eb3ea5737aa 100644 (file)
@@ -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))
     {