]> git.eshelyaron.com Git - emacs.git/commitdiff
(uniscribe_check_otf): Sanity check otf_spec.
authorJason Rumney <jasonr@gnu.org>
Thu, 3 Apr 2008 15:38:29 +0000 (15:38 +0000)
committerJason Rumney <jasonr@gnu.org>
Thu, 3 Apr 2008 15:38:29 +0000 (15:38 +0000)
src/ChangeLog
src/w32uniscribe.c

index 13bf77f34c018083ab8a766e759caef39ff7d9b9..f9cc1294a16b851e4535423378a8bad1bae24f08 100644 (file)
@@ -1,3 +1,7 @@
+2008-04-03  Jason Rumney  <jasonr@gnu.org>
+
+       * w32uniscribe.c (uniscribe_check_otf): Sanity check otf_spec.
+
 2008-04-03  Kenichi Handa  <handa@m17n.org>
 
        * coding.c (CATEGORY_MASK_ANY): Add CATEGORY_MASK_UTF_16_AUTO.
index fd10b9fc0f73552073d7933946285606b8c9de2c..ed29955efe960f03e9698b5c60c35a615a5787df 100644 (file)
@@ -564,6 +564,10 @@ int uniscribe_check_otf (font, otf_spec)
   DWORD table;
   int i, retval = 0;
 
+  /* Check the spec is in the right format.  */
+  if (!CONSP (otf_spec) || Flength (val) < 3)
+    return 0;
+
   /* Break otf_spec into its components.  */
   script = XCAR (otf_spec);
   rest = XCDR (otf_spec);
@@ -609,6 +613,10 @@ int uniscribe_check_otf (font, otf_spec)
       if (NILP (features[i]))
        continue;
 
+      /* If features is not a cons, this font spec is messed up.  */
+      if (!CONSP (features[i]))
+       goto no_support;
+
       /* Read GPOS/GSUB header.  */
       OTF_INT16_VAL (tbl, 4, &scriptlist_table);
       OTF_INT16_VAL (tbl, 6, &feature_table);