freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master 23423bc: [type42] Fix endless loop (#45920).


From: Werner LEMBERG
Subject: [freetype2] master 23423bc: [type42] Fix endless loop (#45920).
Date: Fri, 11 Sep 2015 07:37:50 +0000

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

    [type42] Fix endless loop (#45920).
    
    * src/type42/t42parse.c (t42_parse_encoding): Synchronize with
    type1's `parse_encoding'.
---
 ChangeLog             |    7 +++++++
 src/type42/t42parse.c |   17 ++++++++++++-----
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 73a7a41..804a7b8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2015-09-11  Werner Lemberg  <address@hidden>
+
+       [type42] Fix endless loop (#45920).
+
+       * src/type42/t42parse.c (t42_parse_encoding): Synchronize with
+       type1's `parse_encoding'.
+
 2015-09-10  Werner Lemberg  <address@hidden>
 
        [docmaker] Allow `-' in bold and italic markup.
diff --git a/src/type42/t42parse.c b/src/type42/t42parse.c
index fadbf21..f7d5eb6 100644
--- a/src/type42/t42parse.c
+++ b/src/type42/t42parse.c
@@ -414,6 +414,13 @@
           {
             charcode = (FT_Int)T1_ToInt( parser );
             T1_Skip_Spaces( parser );
+
+            /* protect against invalid charcode */
+            if ( cur == parser->root.cursor )
+            {
+              parser->root.error = FT_THROW( Unknown_File_Format );
+              return;
+            }
           }
 
           cur = parser->root.cursor;
@@ -448,10 +455,10 @@
             /* immediates-only mode we would get an infinite loop if   */
             /* we don't do anything here.                              */
             /*                                                         */
-            /* This encoding array is not valid according to the type1 */
-            /* specification (it might be an encoding for a CID type1  */
-            /* font, however), so we conclude that this font is NOT a  */
-            /* type1 font.                                             */
+            /* This encoding array is not valid according to the       */
+            /* type42 specification (it might be an encoding for a CID */
+            /* type42 font, however), so we conclude that this font is */
+            /* NOT a type42 font.                                      */
             parser->root.error = FT_THROW( Unknown_File_Format );
             return;
           }
@@ -487,7 +494,7 @@
         face->type1.encoding_type = T1_ENCODING_TYPE_ISOLATIN1;
 
       else
-        parser->root.error = FT_THROW( Ignore );
+        parser->root.error = FT_ERR( Ignore );
     }
   }
 



reply via email to

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