Description
The '%%EOF' handling in PDFParser has several errors. The current implementation (start from line 467):
String eof = "";
if(!pdfSource.isEOF())
readLine(); // if there's more data to read, get the EOF flag
// verify that EOF exists
if("%%EOF".equals(eof))
The problems:
- eof variable gets no value
- comparison if("%%EOF".equals(eof)) must be negated
- unreading must first add a newline or space byte because we read with readline() (like in bug
PDFBOX-978)
Corrected version:
String eof = "";
if(!pdfSource.isEOF())
eof = readLine(); // if there's more data to read, get the EOF flag
// verify that EOF exists
if(!"%%EOF".equals(eof)) {
// PDF does not conform to spec, we should warn someone
log.warn("expected='%%EOF' actual='" + eof + "'");
// if we're not at the end of a file, just put it back and move on
if(!pdfSource.isEOF())
}