-
Ensure QPDF m->all_pages and invalid_page_found are reset if getAllPagesInternal throws an exception. Fixes fuzz case 71624.
-
Refactor Pl_QPDFTokenizer
-
Create unresolved objects only for objects in the xref table (except during parsing of the xref table). Do not add indirect nulls into the the object cache as the result of a cache miss during a call to getObject except during parsing or creation/updating from JSON. To support this behaviour, add new private methods getObjectForParser and getObjectForJSON. As a result of this change, dangling references are treated as direct nulls rather than indirect nulls.
-
Buffer output locally. Add qpdf_fuzzer test case.
-
In FUTURE make various QPDFObjectHandle methods const
-
Throw damagedFile if max_warnings is exceeded. Change qpdf_fuzzer warnings limit to limit to 500.
-
As a rule, we should avoid conditional compilation is it always causes code paths that are sometimes not even seen lexically by the compiler. Also, we want the actual code being fuzzed to be as close as possible to the real code. Conditional compilation is suitable to handle underlying system differences. Instead, favor configuration using callbacks or other methods that can be triggered in the places where they need to be exercised.
-
Ensure objects with impossibly large ids are ignored.
-
Also, apply limit in dct_fuzzer
-
Amend fuzz future
-
Refactor QPDF::parse_xrefEntry
-
QPDF::processXRefStream
-
Change the processed Index array to a vector of <first object, number of entries> pairs.
-
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.