freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master fda356b: * include/freetype/internal/ftcalc.h: Add ma


From: Armin
Subject: [freetype2] master fda356b: * include/freetype/internal/ftcalc.h: Add macros for handling
Date: Mon, 16 Jul 2018 12:48:18 -0400 (EDT)

branch: master
commit fda356b742da3b1c0e2bf039227fa324b97b9f8b
Author: Armin Hasitzka <address@hidden>
Commit: Armin Hasitzka <address@hidden>

    * include/freetype/internal/ftcalc.h: Add macros for handling
    harmless over-/underflowing `FT_Int' values.
    
    * src/sfnt/sfdriver.c (fixed2float): Fix negation of
    `(int)(-2147483648)'.
    
    Reported as
    
      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9423
---
 ChangeLog                          | 12 ++++++++++++
 include/freetype/internal/ftcalc.h |  9 +++++++++
 src/sfnt/sfdriver.c                |  2 +-
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 9ce6368..da80b13 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2018-07-16  Armin Hasitzka  <address@hidden>
+
+       * include/freetype/internal/ftcalc.h: Add macros for handling
+       harmless over-/underflowing `FT_Int' values.
+
+       * src/sfnt/sfdriver.c (fixed2float): Fix negation of
+       `(int)(-2147483648)'.
+
+       Reported as
+
+         https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9423
+
 2018-07-16  Werner Lemberg  <address@hidden>
 
        * src/truetype/ttgxvar.c (tt_set_mm_blend): Fix off-by-one error.
diff --git a/include/freetype/internal/ftcalc.h 
b/include/freetype/internal/ftcalc.h
index 02467e9..733b674 100644
--- a/include/freetype/internal/ftcalc.h
+++ b/include/freetype/internal/ftcalc.h
@@ -462,6 +462,15 @@ FT_BEGIN_HEADER
    *
    * Use with care!
    */
+#define ADD_INT( a, b )                           \
+          (FT_Int)( (FT_UInt)(a) + (FT_UInt)(b) )
+#define SUB_INT( a, b )                           \
+          (FT_Int)( (FT_UInt)(a) - (FT_UInt)(b) )
+#define MUL_INT( a, b )                           \
+          (FT_Int)( (FT_UInt)(a) * (FT_UInt)(b) )
+#define NEG_INT( a )                              \
+          (FT_Int)( (FT_UInt)0 - (FT_UInt)(a) )
+
 #define ADD_LONG( a, b )                             \
           (FT_Long)( (FT_ULong)(a) + (FT_ULong)(b) )
 #define SUB_LONG( a, b )                             \
diff --git a/src/sfnt/sfdriver.c b/src/sfnt/sfdriver.c
index cd2d809..ae6d6cd 100644
--- a/src/sfnt/sfdriver.c
+++ b/src/sfnt/sfdriver.c
@@ -677,7 +677,7 @@
     if ( fixed < 0 )
     {
       *p++ = '-';
-      fixed = -fixed;
+      fixed = NEG_INT( fixed );
     }
 
     int_part  = ( fixed >> 16 ) & 0xFFFF;



reply via email to

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