Commit 7bdc1d598d02f2fe87caaec68737added4965707

Werner Lemberg 2009-12-18T07:13:22

Fix Savannah bug #28320. There exist corrupt, subsetted fonts (embedded in PDF files) which contain a private dict that ends with an unterminated floating point number (no operator following). We now ignore this error (as acrobat does). * src/cff/cffparse.c (cff_parser_run): Don't emit a syntax error for unterminated floating point numbers.

diff --git a/ChangeLog b/ChangeLog
index b29306f..a0a9d9a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2009-12-18  Werner Lemberg  <wl@gnu.org>
+
+	Fix Savannah bug #28320.
+
+	There exist corrupt, subsetted fonts (embedded in PDF files) which
+	contain a private dict that ends with an unterminated floating point
+	number (no operator following).  We now ignore this error (as
+	acrobat does).
+
+	* src/cff/cffparse.c (cff_parser_run): Don't emit a syntax error for
+	unterminated floating point numbers.
+
 2009-12-16  Werner Lemberg  <wl@gnu.org>
 
 	Really fix compiler warnings.
diff --git a/src/cff/cffparse.c b/src/cff/cffparse.c
index 947ec9d..01266a1 100644
--- a/src/cff/cffparse.c
+++ b/src/cff/cffparse.c
@@ -745,8 +745,10 @@
           p++;
           for (;;)
           {
+            /* An unterminated floating point number at the */
+            /* end of a dictionary is invalid but harmless. */
             if ( p >= limit )
-              goto Syntax_Error;
+              goto Exit;
             v = p[0] >> 4;
             if ( v == 15 )
               break;