-
Add extra fuzz test case and amend memory limit for Pl_DCT.
-
In QPDF::read_xrefEntry add buffer overflow test for first eol character. Overlong f1 or f2 entries consisting only of zeros could cause a buffer overflow. Add fuzz testcase 69913.
-
Refine handling of severely damaged files
-
Also add new fuzz test case.
-
Refactor QPDF::parse_xrefEntry
-
QPDF::processXRefStream
-
Change the processed Index array to a vector of <first object, number of entries> pairs.
-
Add closure damaged to create damagedPDF exceptions.
-
Tune processing of subsections.
-
Tune pointer arithmetic.
-
Apply temporary fix to deal with fuzz case 68915. (Error is an integer overflow which would immediately cause a runtime error as a result of a call to QInitCQIntC::to_size.)
-
Create set without creation of an intermediate vector.
-
Move reading of the entry from read_xrefTable to parse_xrefEntry. Split parse_xrefEntry into two new methods read_xrefEntry and read_bad_xrefEntry. read_xrefEntry is optimised for reading correct entries. To handle incorrect entries it calls read_bad_xrefEntry, which is largely unchanged from parse_xrefEntry.
-
Fix two errors introduced in #1110 and #1112. Since #1110, encountering the invalid indirect reference #1110 -2147483648 n R produces an integer underflow which, if undetected, immediately trigger a logic error. Since #1112, object -1 0 R may be incorrectly identified as an earlier generation of itself and deleted, invalidating a live iterator.
-
Change set visited to std::vector<bool>
-
Swap front and back, and change queue from list to vector