Author: tilman Date: Wed Oct 17 19:56:02 2018 New Revision: 1844157 URL: http://svn.apache.org/viewvc?rev=1844157&view=rev Log: PDFBOX-4352: avoid NullPointerException
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1844157&r1=1844156&r2=1844157&view=diff ============================================================================== --- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java (original) +++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Wed Oct 17 19:56:02 2018 @@ -326,7 +326,7 @@ public class COSParser extends BaseParse parseXrefTable(prev); if (!parseTrailer()) { - throw new IOException("Expected trailer object at position: " + throw new IOException("Expected trailer object at offset " + source.getPosition()); } COSDictionary trailer = xrefTrailerResolver.getCurrentTrailer(); @@ -2497,7 +2497,7 @@ public class COSParser extends BaseParse if (source.getPosition() == trailerOffset) { // warn only the first time - LOG.warn("Expected trailer object at position " + trailerOffset + LOG.warn("Expected trailer object at offset " + trailerOffset + ", keep trying"); } readLine(); @@ -2916,6 +2916,13 @@ public class COSParser extends BaseParse private void parseDictionaryRecursive(COSObject dictionaryObject) throws IOException { parseObjectDynamically(dictionaryObject, true); + if (dictionaryObject.getObject() == null) + { + // we can't be lenient here, this is called by prepareDecryption() + // to get the encryption directory + throw new IOException("Dictionary object " + dictionaryObject + + " is null at offset " + source.getPosition()); + } COSDictionary dictionary = (COSDictionary) dictionaryObject.getObject(); for (COSBase value : dictionary.getValues()) {