You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2017/09/30 15:13:44 UTC
svn commit: r1810212 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
Author: lehmi
Date: Sat Sep 30 15:13:44 2017
New Revision: 1810212
URL: http://svn.apache.org/viewvc?rev=1810212&view=rev
Log:
PDFBOX-3870: make getLength more lenient
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1810212&r1=1810211&r2=1810212&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Sat Sep 30 15:13:44 2017
@@ -960,7 +960,8 @@ public class COSParser extends BaseParse
else if (lengthBaseObj instanceof COSObject)
{
COSObject lengthObj = (COSObject) lengthBaseObj;
- if (lengthObj.getObject() == null)
+ COSBase length = lengthObj.getObject();
+ if (length == null)
{
// not read so far, keep current stream position
final long curFileOffset = source.getPosition();
@@ -968,17 +969,24 @@ public class COSParser extends BaseParse
parseObjectDynamically(lengthObj, isObjectStream);
// reset current stream position
source.seek(curFileOffset);
- if (lengthObj.getObject() == null)
- {
- throw new IOException("Length object content was not read.");
- }
+ length = lengthObj.getObject();
}
- if (!(lengthObj.getObject() instanceof COSNumber))
+ if (length == null)
+ {
+ throw new IOException("Length object content was not read.");
+ }
+ if (COSNull.NULL == length)
+ {
+ LOG.warn("Length object (" + lengthObj.getObjectNumber() + " "
+ + lengthObj.getGenerationNumber() + ") not found");
+ return null;
+ }
+ if (!(length instanceof COSNumber))
{
throw new IOException("Wrong type of referenced length object " + lengthObj
- + ": " + lengthObj.getObject().getClass().getSimpleName());
+ + ": " + length.getClass().getSimpleName());
}
- retVal = (COSNumber) lengthObj.getObject();
+ retVal = (COSNumber) length;
}
else
{