Author: lehmi Date: Sun Oct 21 20:30:11 2018 New Revision: 1844519 URL: http://svn.apache.org/viewvc?rev=1844519&view=rev Log: PDFBOX-4354: avoid NumberFormatException
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=1844519&r1=1844518&r2=1844519&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 Sun Oct 21 20:30:11 2018 @@ -2049,13 +2049,20 @@ public class COSParser extends BaseParse Map<COSObjectKey, Long> xrefOffset = xrefTrailerResolver.getXrefTable(); for (int i = 0; i < nrOfObjects; i++) { - long objNumber = Long.parseLong(numbers[i * 2]); - COSObjectKey objKey = new COSObjectKey(objNumber, 0); - Long existingOffset = bfSearchCOSObjectKeyOffsets.get(objKey); - if (existingOffset == null || offset > existingOffset) + try { - bfSearchCOSObjectKeyOffsets.put(objKey, -stmObjNumber); - xrefOffset.put(objKey, -stmObjNumber); + long objNumber = Long.parseLong(numbers[i * 2]); + COSObjectKey objKey = new COSObjectKey(objNumber, 0); + Long existingOffset = bfSearchCOSObjectKeyOffsets.get(objKey); + if (existingOffset == null || offset > existingOffset) + { + bfSearchCOSObjectKeyOffsets.put(objKey, -stmObjNumber); + xrefOffset.put(objKey, -stmObjNumber); + } + } + catch (NumberFormatException exception) + { + LOG.debug("Skipped corrupt object key in stream: " + stmObjNumber); } } }