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/07/16 22:00:32 UTC

svn commit: r1691437 - /pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/PageTreeValidationProcess.java

Author: tilman
Date: Thu Jul 16 20:00:32 2015
New Revision: 1691437

URL: http://svn.apache.org/r1691437
Log:
PDFBOX-2886: avoid IllegalArgumentException if /Pages is missing

Modified:
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/PageTreeValidationProcess.java

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/PageTreeValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/PageTreeValidationProcess.java?rev=1691437&r1=1691436&r2=1691437&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/PageTreeValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/PageTreeValidationProcess.java Thu Jul 16 20:00:32 2015
@@ -21,11 +21,14 @@
 
 package org.apache.pdfbox.preflight.process;
 
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
 import static org.apache.pdfbox.preflight.PreflightConfiguration.PAGE_PROCESS;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_NOCATALOG;
 
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.PDPage;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_PDF_PROCESSING_MISSING;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
@@ -40,6 +43,13 @@ public class PageTreeValidationProcess e
         PDDocumentCatalog catalog = context.getDocument().getDocumentCatalog();
         if (catalog != null)
         {
+            COSDictionary catalogDict = catalog.getCOSObject();
+            if (!(catalogDict.getDictionaryObject(COSName.PAGES) instanceof COSDictionary))
+            {
+                addValidationError(context, new ValidationError(ERROR_PDF_PROCESSING_MISSING, 
+                        "/Pages dictionary entry is missing in document catalog"));
+                return;
+            }
             int numPages = context.getDocument().getNumberOfPages();
             for (int i = 0; i < numPages; i++)
             {