freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master 3cb7b3f: [sfnt] Avoid sanitizer warning (#57286).


From: Werner LEMBERG
Subject: [freetype2] master 3cb7b3f: [sfnt] Avoid sanitizer warning (#57286).
Date: Sat, 23 Nov 2019 04:57:19 -0500 (EST)

branch: master
commit 3cb7b3f7cb35fe403195e5e5dd76c1a8fce2e59a
Author: Ben Wagner <address@hidden>
Commit: Werner Lemberg <address@hidden>

    [sfnt] Avoid sanitizer warning (#57286).
    
    * src/sfnt/ttcmap.c (tt_face_build_cmaps): Avoid possible `NULL +
    offset' computation.
    Tag `table' as `const'.
---
 ChangeLog         | 8 ++++++++
 src/sfnt/ttcmap.c | 9 +++++----
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 7019ab1..6a2743c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2019-11-23  Ben Wagner  <address@hidden>
+
+       [sfnt] Avoid sanitizer warning (#57286).
+
+       * src/sfnt/ttcmap.c (tt_face_build_cmaps): Avoid possible `NULL +
+       offset' computation.
+       Tag `table' as `const'.
+
 2019-11-23  John Stracke  <address@hidden>
             Werner Lemberg  <address@hidden>
 
diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c
index 683f3b1..a3acf78 100644
--- a/src/sfnt/ttcmap.c
+++ b/src/sfnt/ttcmap.c
@@ -3764,16 +3764,16 @@
   FT_LOCAL_DEF( FT_Error )
   tt_face_build_cmaps( TT_Face  face )
   {
-    FT_Byte*           table = face->cmap_table;
-    FT_Byte*           limit = table + face->cmap_size;
+    FT_Byte* const     table   = face->cmap_table;
+    FT_Byte*           limit;
     FT_UInt volatile   num_cmaps;
-    FT_Byte* volatile  p     = table;
+    FT_Byte* volatile  p       = table;
     FT_Library         library = FT_FACE_LIBRARY( face );
 
     FT_UNUSED( library );
 
 
-    if ( !p || p + 4 > limit )
+    if ( !p || face->cmap_size < 4 )
       return FT_THROW( Invalid_Table );
 
     /* only recognize format 0 */
@@ -3786,6 +3786,7 @@
     }
 
     num_cmaps = TT_NEXT_USHORT( p );
+    limit     = table + face->cmap_size;
 
     for ( ; num_cmaps > 0 && p + 8 <= limit; num_cmaps-- )
     {



reply via email to

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