Skip to content

Commit 8604732

Browse files
committed
PDFBOX-5283: irgnore wrong object number in lenient mode
1 parent 4896c6f commit 8604732

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1235,19 +1235,22 @@ private COSObjectKey findObjectKey(COSObjectKey objectKey, long offset) throws I
12351235
{
12361236
source.seek(offset);
12371237
// try to read the given object/generation number
1238-
if (objectKey.getNumber() == readObjectNumber())
1238+
long foundObjectNumber = readObjectNumber();
1239+
if(objectKey.getNumber() != foundObjectNumber){
1240+
LOG.warn("found wrong object number. expected [" + objectKey.getNumber() +"] found ["+ foundObjectNumber + "]");
1241+
if(!isLenient) return null;
1242+
}
1243+
1244+
int genNumber = readGenerationNumber();
1245+
// finally try to read the object marker
1246+
readExpectedString(OBJ_MARKER, true);
1247+
if (genNumber == objectKey.getGeneration())
12391248
{
1240-
int genNumber = readGenerationNumber();
1241-
// finally try to read the object marker
1242-
readExpectedString(OBJ_MARKER, true);
1243-
if (genNumber == objectKey.getGeneration())
1244-
{
1245-
return objectKey;
1246-
}
1247-
else if (isLenient && genNumber > objectKey.getGeneration())
1248-
{
1249-
return new COSObjectKey(objectKey.getNumber(), genNumber);
1250-
}
1249+
return objectKey;
1250+
}
1251+
else if (isLenient && genNumber > objectKey.getGeneration())
1252+
{
1253+
return new COSObjectKey(objectKey.getNumber(), genNumber);
12511254
}
12521255
}
12531256
catch (IOException exception)
@@ -1322,7 +1325,7 @@ private Map<COSObjectKey, Long> bfSearchForObjects() throws IOException
13221325
// add the former object ID only if there was a subsequent object ID
13231326
bfCOSObjectKeyOffsets.put(
13241327
new COSObjectKey(lastObjectId, lastGenID), lastObjOffset);
1325-
}
1328+
}
13261329
lastObjectId = objectId;
13271330
lastGenID = genID;
13281331
lastObjOffset = tempOffset + 1;

0 commit comments

Comments
 (0)