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();