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 2022/04/01 06:24:23 UTC

svn commit: r1899467 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java

Author: lehmi
Date: Fri Apr  1 06:24:22 2022
New Revision: 1899467

URL: http://svn.apache.org/viewvc?rev=1899467&view=rev
Log:
PDFBOX-5400: added trigger for brute force search as it isn't triggered in any cases anymore when validating the xref entries

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=1899467&r1=1899466&r2=1899467&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 Fri Apr  1 06:24:22 2022
@@ -665,8 +665,9 @@ public class COSParser extends BaseParse
                     if (!parsedObjects.contains(objId))
                     {
                         Long fileOffset = document.getXrefTable().get(objKey);
-                        if (fileOffset == null && isLenient && bfSearchCOSObjectKeyOffsets != null)
+                        if (fileOffset == null && isLenient)
                         {
+                            bfSearchForObjects();
                             fileOffset = bfSearchCOSObjectKeyOffsets.get(objKey);
                             if (fileOffset != null)
                             {
@@ -691,8 +692,9 @@ public class COSParser extends BaseParse
                                 fileOffset = document.getXrefTable().get(key);
                                 if (fileOffset == null || fileOffset <= 0)
                                 {
-                                    if (isLenient && bfSearchCOSObjectKeyOffsets != null)
+                                    if (isLenient)
                                     {
+                                        bfSearchForObjects();
                                         fileOffset = bfSearchCOSObjectKeyOffsets.get(key);
                                         if (fileOffset != null)
                                         {
@@ -827,8 +829,9 @@ public class COSParser extends BaseParse
             Long offsetOrObjstmObNr = document.getXrefTable().get(objKey);
 
             // maybe something is wrong with the xref table -> perform brute force search for all objects
-            if (offsetOrObjstmObNr == null && isLenient && bfSearchCOSObjectKeyOffsets != null)
+            if (offsetOrObjstmObNr == null && isLenient)
             {
+                bfSearchForObjects();
                 offsetOrObjstmObNr = bfSearchCOSObjectKeyOffsets.get(objKey);
                 if (offsetOrObjstmObNr != null)
                 {
@@ -856,7 +859,7 @@ public class COSParser extends BaseParse
             if (offsetOrObjstmObNr == null && isLenient && bfSearchCOSObjectKeyOffsets == null)
             {
                 bfSearchForObjects();
-                if (bfSearchCOSObjectKeyOffsets != null && !bfSearchCOSObjectKeyOffsets.isEmpty())
+                if (!bfSearchCOSObjectKeyOffsets.isEmpty())
                 {
                     LOG.debug("Add all new read objects from brute force search to the xref table");
                     Map<COSObjectKey, Long> xrefOffset = document.getXrefTable();
@@ -1522,7 +1525,7 @@ public class COSParser extends BaseParse
         if (!validateXrefOffsets(xrefOffset))
         {
             bfSearchForObjects();
-            if (bfSearchCOSObjectKeyOffsets != null && !bfSearchCOSObjectKeyOffsets.isEmpty())
+            if (!bfSearchCOSObjectKeyOffsets.isEmpty())
             {
                 LOG.debug("Replaced read xref table with the results of a brute force search");
                 xrefOffset.clear();