You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2015/01/19 22:16:49 UTC

svn commit: r1653125 - in /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf: NameRecord.java NamingTable.java

Author: jahewson
Date: Mon Jan 19 21:16:49 2015
New Revision: 1653125

URL: http://svn.apache.org/r1653125
Log:
PDFBOX-2608: Don't read invalid string offsets in TTF name table

Modified:
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NameRecord.java
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NameRecord.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NameRecord.java?rev=1653125&r1=1653124&r2=1653125&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NameRecord.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NameRecord.java Mon Jan 19 21:16:49 2015
@@ -186,7 +186,8 @@ public class NameRecord
             "platform=" + platformId + 
             " pEncoding=" + platformEncodingId + 
             " language=" + languageId + 
-            " name=" + nameId;
+            " name=" + nameId + 
+            " " + string;
     }
     /**
      * @return Returns the string.

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java?rev=1653125&r1=1653124&r2=1653125&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java Mon Jan 19 21:16:49 2015
@@ -66,6 +66,14 @@ public class NamingTable extends TTFTabl
         for (int i=0; i<numberOfNameRecords; i++)
         {
             NameRecord nr = nameRecords.get(i);
+
+            // don't try to read invalid offsets, see PDFBOX-2608
+            if (nr.getStringOffset() > getLength())
+            {
+                nr.setString(null);
+                continue;
+            }
+            
             data.seek(getOffset() + (2*3)+numberOfNameRecords*2*6+nr.getStringOffset());
             int platform = nr.getPlatformId();
             int encoding = nr.getPlatformEncodingId();
@@ -90,6 +98,7 @@ public class NamingTable extends TTFTabl
                     charset = "ISO-8859-1";
                 }
             }
+
             String string = data.readString(nr.getStringLength(), charset);
             nr.setString(string);
         }