Doh. Don't use CPAL or COLR data if tables are missing. Reported by Alexei. * src/sfnt/ttcolr.c (tt_face_get_colr_layer): Return immediately if `colr' is NULL. * src/sfnt/ttcpal.c (tt_face_palette_set): Return immediately, if `cpal' is NULL.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
diff --git a/ChangeLog b/ChangeLog
index ce05ec5..af02921 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2018-06-19 Werner Lemberg <wl@gnu.org>
+
+ Doh. Don't use CPAL or COLR data if tables are missing.
+
+ Reported by Alexei.
+
+ * src/sfnt/ttcolr.c (tt_face_get_colr_layer): Return immediately if
+ `colr' is NULL.
+
+ * src/sfnt/ttcpal.c (tt_face_palette_set): Return immediately, if
+ `cpal' is NULL.
+
2018-06-17 Alexei Podtelezhnikov <apodtele@gmail.com>
[base] Introduce `FT_New_Glyph'.
diff --git a/src/sfnt/ttcolr.c b/src/sfnt/ttcolr.c
index 4fc4300..b12ebe2 100644
--- a/src/sfnt/ttcolr.c
+++ b/src/sfnt/ttcolr.c
@@ -220,6 +220,9 @@
FT_UInt glyph_index;
+ if ( !colr )
+ return 0;
+
if ( !iterator->p )
{
FT_ULong offset;
diff --git a/src/sfnt/ttcpal.c b/src/sfnt/ttcpal.c
index 6c6b06d..fc78c67 100644
--- a/src/sfnt/ttcpal.c
+++ b/src/sfnt/ttcpal.c
@@ -258,7 +258,7 @@
FT_ULong record_offset;
- if ( palette_index >= face->palette_data.num_palettes )
+ if ( !cpal || palette_index >= face->palette_data.num_palettes )
return FT_THROW( Invalid_Argument );
offset = cpal->color_indices + 2 * palette_index;