freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master 052f6c5: [truetype] Another GX sanity test.


From: Werner LEMBERG
Subject: [freetype2] master 052f6c5: [truetype] Another GX sanity test.
Date: Tue, 13 Oct 2015 06:25:35 +0000

branch: master
commit 052f6c5649f7a46e599742eb6f47fa91d090f77e
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    [truetype] Another GX sanity test.
    
    * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check
    `tupleCount'.
    Add tracing message.
---
 ChangeLog              |    8 ++++++++
 src/truetype/ttgxvar.c |   17 ++++++++++++++++-
 2 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 96e45a6..ba383ef 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2015-10-13  Werner Lemberg  <address@hidden>
 
+       [truetype] Another GX sanity test.
+
+       * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check
+       `tupleCount'.
+       Add tracing message.
+
+2015-10-13  Werner Lemberg  <address@hidden>
+
        [truetype] Fix memory leak for broken GX fonts (#46188).
 
        * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of
diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c
index 2f11504..3ae31d6 100644
--- a/src/truetype/ttgxvar.c
+++ b/src/truetype/ttgxvar.c
@@ -1864,7 +1864,19 @@
       goto Fail2;
 
     tupleCount   = FT_GET_USHORT();
-    offsetToData = glyph_start + FT_GET_USHORT();
+    offsetToData = FT_GET_USHORT();
+
+    /* rough sanity test */
+    if ( offsetToData + tupleCount * 4 > stream->size - stream->pos )
+    {
+      FT_TRACE2(( "TT_Vary_Apply_Glyph_Deltas:"
+                  " invalid glyph variation array header\n" ));
+
+      error = FT_THROW( Invalid_Table );
+      goto Fail2;
+    }
+
+    offsetToData += glyph_start;
 
     if ( tupleCount & GX_TC_TUPLES_SHARE_POINT_NUMBERS )
     {
@@ -1901,6 +1913,9 @@
       }
       else if ( ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) >= blend->tuplecount )
       {
+        FT_TRACE2(( "TT_Vary_Apply_Glyph_Deltas:"
+                    " invalid tuple index\n" ));
+
         error = FT_THROW( Invalid_Table );
         goto Fail2;
       }



reply via email to

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