-
To be encapsulated later.
-
Also, when recovering trailer from xref streams, pick the last valid trailer encountered rather than the first.
-
In FUTURE, treat uninitialized object handles as null
-
Fixes fuzz issue 71689.
-
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.
-
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.
-
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 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.