-
Change the return type to a std::pair<bool, QPDFObjectHandle> in order to allow a default constructed object handle (which is currently returned to indicate failure) to become a valid object.
-
Fix handling of hybrid reference files in QPDF::read_xrefTable
-
Fix #1242
-
Fix QPDF::recoverStreamLength
-
Tidy QPDF_Stream
-
Replace some std::shared_ptr parameters with reference parameters
-
Ensure QPDF m->all_pages and invalid_page_found are reset if getAllPagesInternal throws an exception. Fixes fuzz case 71624.
-
Refactor ObjTable
-
1. Make class final 2. Pass og parameter by value 3. Properly initialize qpdf and og Also, tweak QPDF::replaceObject to allow stream replacement without violating the requirement that streams must always be indirect objects. Also, remove QPDF::reserveStream as it does not do what the name implies and having this as a separate methods does not aid code readability.
-
Split qpdf_fuzzer into six separate fuzzers
-
Given that the PDF spec requires the xref table to contain entries for all object ids <= the maximum id present in a PDF document, max_size is a qpdf implementation limitation for legitimate object ids.
-
Refactor QPDFObjectHandle::getTypeName
-
In qpdf_fuzzer and dct_fuzzer add a scan limit for Pl_DCT
-
In QPDF::readObjectAtOffset fail early on 'expect n n obj'
-
Refactor Pl_QPDFTokenizer
-
Ensure the the recovered stream end is not part of a different object. Test file is bad24.pdf with stream 4 'endstream' corrupted.
-
QPDF::read_xrefTable ignores type 0 entries for objects in a section if an associates XRefStm has an entry for the same object. The spec states: When the conforming reader searches for an object, if an entry is not found in any given standard cross-reference section, the search shall proceed to a cross-reference stream specified by the XRefStm entry before looking in the previous cross-reference section, If a deleted entry is found in a section, the XRefStm is not searched according to the standard.
-
Fix test_driver comment
-
If Pl_Flate memory limit is exceeded do not attempt 'finish' processing
-
Guard against 0 byte writes in Pl_Buffer and Pl_String
-
Tidy qpdfjob-remove-annotations example
-
Refactor the creation of unresolved objects
-
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.