aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYAMAMOTO Mitsuharu2019-07-06 14:24:34 +0900
committerYAMAMOTO Mitsuharu2019-07-06 14:24:34 +0900
commitf0db687a28546b85a70fea1ce3b1fd4186693e70 (patch)
tree7cab7ed643b7bf41a78a57758950359dc6d62232 /src
parente97c0437aa135f9580cd8cc1ec912758e3610ab1 (diff)
downloademacs-f0db687a28546b85a70fea1ce3b1fd4186693e70.tar.gz
emacs-f0db687a28546b85a70fea1ce3b1fd4186693e70.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/macfont.m5
1 files changed, 4 insertions, 1 deletions
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,
2070 ptrdiff_t j; 2070 ptrdiff_t j;
2071 2071
2072 for (j = 0; j < ASIZE (chars); j++) 2072 for (j = 0; j < ASIZE (chars); j++)
2073 if (TYPE_RANGED_INTEGERP (UTF32Char, AREF (chars, j)) 2073 if (RANGED_INTEGERP (0, AREF (chars, j), MAX_UNICODE_CHAR)
2074 && CFCharacterSetIsLongCharacterMember (desc_charset, 2074 && CFCharacterSetIsLongCharacterMember (desc_charset,
2075 XFASTINT (AREF (chars, j)))) 2075 XFASTINT (AREF (chars, j))))
2076 break; 2076 break;
@@ -2705,6 +2705,9 @@ macfont_has_char (Lisp_Object font, int c)
2705 int result; 2705 int result;
2706 CFCharacterSetRef charset; 2706 CFCharacterSetRef charset;
2707 2707
2708 if (c < 0 || c > MAX_UNICODE_CHAR)
2709 return false;
2710
2708 block_input (); 2711 block_input ();
2709 if (FONT_ENTITY_P (font)) 2712 if (FONT_ENTITY_P (font))
2710 { 2713 {