Tilman Hausherr created PDFBOX-2759:
---------------------------------------
Summary: NPE in BaseParser.parseCOSDictionaryValue() due to object
reference in content stream
Key: PDFBOX-2759
URL: https://issues.apache.org/jira/browse/PDFBOX-2759
Project: PDFBox
Issue Type: Bug
Components: Parsing
Affects Versions: 2.0.0
Reporter: Tilman Hausherr
Assignee: Tilman Hausherr
Fix For: 2.0.0
{code}
java.lang.NullPointerException
at
org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionaryValue(BaseParser.java:235)
at
org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionary(BaseParser.java:311)
at
org.apache.pdfbox.pdfparser.PDFStreamParser.parseNextToken(PDFStreamParser.java:217)
at
org.apache.pdfbox.pdfparser.PDFStreamParser.access$000(PDFStreamParser.java:47)
at
org.apache.pdfbox.pdfparser.PDFStreamParser$1.tryNext(PDFStreamParser.java:144)
at
org.apache.pdfbox.pdfparser.PDFStreamParser$1.hasNext(PDFStreamParser.java:157)
at
org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:477)
at
org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:456)
at
org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:167)
at
org.apache.pdfbox.preflight.content.PreflightContentStream.validatePageContentStream(PreflightContentStream.java:72)
at
org.apache.pdfbox.preflight.process.reflect.SinglePageValidationProcess.validateContent(SinglePageValidationProcess.java:186)
at
org.apache.pdfbox.preflight.process.reflect.SinglePageValidationProcess.validate(SinglePageValidationProcess.java:89)
at
org.apache.pdfbox.preflight.utils.ContextHelper.callValidation(ContextHelper.java:83)
at
org.apache.pdfbox.preflight.utils.ContextHelper.validateElement(ContextHelper.java:55)
at
org.apache.pdfbox.preflight.process.PageTreeValidationProcess.validatePage(PageTreeValidationProcess.java:60)
at
org.apache.pdfbox.preflight.process.PageTreeValidationProcess.validate(PageTreeValidationProcess.java:48)
at
org.apache.pdfbox.preflight.utils.ContextHelper.callValidation(ContextHelper.java:83)
at
org.apache.pdfbox.preflight.utils.ContextHelper.validateElement(ContextHelper.java:121)
at
org.apache.pdfbox.preflight.PreflightDocument.validate(PreflightDocument.java:164)
at
com.mycompany.preflightmasstest.PreflightChecker.run(PreflightChecker.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
{code}
The cause is a malformed content stream:
{code}
(186) Tj
-132.88 -0.24 TD
/F1 10.00 Tf
(TOTAL RESOURCES:) Tj
162.08 0.00 TD
(\(DAYS\)) Tj
155.92 16.48 TD
(February 15, 2001) Tj
ET
Q 0 g 0 G
endstream
endobj
649 0 obj
4096
endobj
647 0 obj
<<
/Type /Page
/MediaBox [0 0 612 792]
/Parent 3 0 R
/Resources <</ProcSet [ /PDF /Text ] /Font << /F0 12 0 R /F1 13 0 R >> >>
/Contents 648 0 R
/CropBox [0 0 612 792]
>>
endobj
{code}
BaseParser.parseCOSDictionaryValue() is used both by PDFParser and by
PDFStreamParser because these have a few things in common, e.g. dictionaries.
However the spec tells us: "Indirect objects and object references shall not be
permitted at all" in content streams. I will throw an exception instead.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]