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 2014/08/05 20:51:10 UTC
svn commit: r1615976 -
/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java
Author: jahewson
Date: Tue Aug 5 18:51:10 2014
New Revision: 1615976
URL: http://svn.apache.org/r1615976
Log:
PDFBOX-2244: Handle out-of-order array indexes
Modified:
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java
Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java?rev=1615976&r1=1615975&r2=1615976&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java Tue Aug 5 18:51:10 2014
@@ -588,7 +588,12 @@ final class Type1Parser
*/
private void readSubrs(int lenIV) throws IOException
{
+ // allocate size (array indexes may not be in-order)
int length = read(Token.INTEGER).intValue();
+ for (int i = 0; i < length; i++)
+ {
+ font.subrs.add(null);
+ }
read(Token.NAME, "array");
for (int i = 0; i < length; i++)
@@ -601,12 +606,12 @@ final class Type1Parser
}
read(Token.NAME, "dup");
- read(Token.INTEGER);
+ Token index = read(Token.INTEGER);
read(Token.INTEGER);
// RD
Token charstring = read(Token.CHARSTRING);
- font.subrs.add(decrypt(charstring.getData(), CHARSTRING_KEY, lenIV));
+ font.subrs.set(index.intValue(), decrypt(charstring.getData(), CHARSTRING_KEY, lenIV));
readPut();
}
readDef();