freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master beecf80: [cff] Fix heap buffer overflow (#49858).


From: Werner LEMBERG
Subject: [freetype2] master beecf80: [cff] Fix heap buffer overflow (#49858).
Date: Fri, 16 Dec 2016 07:52:22 +0000 (UTC)

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

    [cff] Fix heap buffer overflow (#49858).
    
    * src/cff/cffparse.c (cff_parser_run): Add one more stack size
    check.
---
 ChangeLog          |    7 +++++++
 src/cff/cffparse.c |   10 +++++++---
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 77899d4..1243bd4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-12-16  Werner Lemberg  <address@hidden>
+
+       [cff] Fix heap buffer overflow (#49858).
+
+       * src/cff/cffparse.c (cff_parser_run): Add one more stack size
+       check.
+
 2016-12-15  Werner Lemberg  <address@hidden>
 
        Fix clang warnings.
diff --git a/src/cff/cffparse.c b/src/cff/cffparse.c
index 022c289..9b5ad72 100644
--- a/src/cff/cffparse.c
+++ b/src/cff/cffparse.c
@@ -1422,13 +1422,17 @@
         /* and look for it in our current list.                            */
 
         FT_UInt                   code;
-        FT_UInt                   num_args = (FT_UInt)
-                                             ( parser->top - parser->stack );
+        FT_UInt                   num_args;
         const CFF_Field_Handler*  field;
 
 
+        if ( (FT_UInt)( parser->top - parser->stack ) >= parser->stackSize )
+          goto Stack_Overflow;
+
+        num_args     = (FT_UInt)( parser->top - parser->stack );
         *parser->top = p;
-        code = v;
+        code         = v;
+
         if ( v == 12 )
         {
           /* two byte operator */



reply via email to

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