emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 0e15bd1: Avoid crash inside CFCharacterSetIsLongCha


From: YAMAMOTO Mitsuharu
Subject: [Emacs-diffs] master 0e15bd1: Avoid crash inside CFCharacterSetIsLongCharacterMember
Date: Sat, 6 Jul 2019 01:10:04 -0400 (EDT)

branch: master
commit 0e15bd11dc058d5efcdcb16436c3d8cf240859f6
Author: YAMAMOTO Mitsuharu <address@hidden>
Commit: YAMAMOTO Mitsuharu <address@hidden>

    Avoid crash inside CFCharacterSetIsLongCharacterMember
    
    * src/macfont.m (macfont_supports_charset_and_languages_p)
    (macfont_has_char): Don't pass integers outside the Unicode codespace to
    CFCharacterSetIsLongCharacterMember.
---
 src/macfont.m | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/macfont.m b/src/macfont.m
index f736fbf..2b7f963 100644
--- a/src/macfont.m
+++ b/src/macfont.m
@@ -2076,7 +2076,7 @@ macfont_supports_charset_and_languages_p 
(CTFontDescriptorRef desc,
               ptrdiff_t j;
 
               for (j = 0; j < ASIZE (chars); j++)
-                if (TYPE_RANGED_FIXNUMP (UTF32Char, AREF (chars, j))
+                if (RANGED_FIXNUMP (0, AREF (chars, j), MAX_UNICODE_CHAR)
                     && CFCharacterSetIsLongCharacterMember (desc_charset,
                                                             XFIXNAT (AREF 
(chars, j))))
                   break;
@@ -2710,6 +2710,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))
     {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]