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

svn commit: r1674118 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java

Author: tilman
Date: Thu Apr 16 17:55:43 2015
New Revision: 1674118

URL: http://svn.apache.org/r1674118
Log:
PDFBOX-2759: avoid NPE when indirect object appears in content stream

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java?rev=1674118&r1=1674117&r2=1674118&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java Thu Apr 16 17:55:43 2015
@@ -232,7 +232,7 @@ public abstract class BaseParser impleme
             }
             COSObjectKey key = new COSObjectKey(((COSInteger) number).longValue(),
                     ((COSInteger) generationNumber).intValue());
-            retval = document.getObjectFromPool(key);
+            retval = getObjectFromPool(key);
         }
         else
         {
@@ -241,6 +241,15 @@ public abstract class BaseParser impleme
         return retval;
     }
 
+    private COSBase getObjectFromPool(COSObjectKey key) throws IOException
+    {
+        if (document == null)
+        {
+            throw new IOException("object reference " + key + " at offset " + pdfSource.getOffset() + " in content stream");
+        }
+        return document.getObjectFromPool(key);
+    }
+
     /**
      * This will parse a PDF dictionary.
      *
@@ -979,7 +988,7 @@ public abstract class BaseParser impleme
                     {
                         COSInteger number = (COSInteger)po.remove( po.size() -1 );
                         COSObjectKey key = new COSObjectKey(number.longValue(), genNumber.intValue());
-                        pbo = document.getObjectFromPool(key);
+                        pbo = getObjectFromPool(key);
                     }
                     else
                     {