-
Refactor QPDF xref table
-
Also, delay adjustments for compressed objects until needed by linearization checks.
-
Optimistically read subsection headers without reading individual object entries, assuming that they are 20 bytes long as per the PDF spec. If problems are encountered, fall back to calling bad_subsections.
-
Replace QPDFXRefEntry with a std::variant of structs.
-
Temporarily disable 3 specific-bugs tests. Remove 'xref size mismatch' test.
-
Split reconstruction into two passes - scanning of input for objects and insertion of objects into the xref table. This allows insertion to take place in the usual reverse order and removes the need for a separate insert_reconstructed method.
-
Rename to Xref_table::process_section. Process trailer processing subsection entries.
-
Calculate all subsections before reading subsection entries. Duplicates some warnings for the time being.
-
Rename to Xref_table::subsection. Return results instead of using out parameters. Take on responsibility for throwing exception and calculation of offset of first subsection entry.
-
Also, remove redundant clearing of the xref tabl during QPDF destruction.
-
Do not remove object from xref table as this is only required when the the method is called from within QPDF::Xref_table.
-
To be encapsulated later.
-
Also, when recovering trailer from xref streams, pick the last valid trailer encountered rather than the first.
-
Change first xref stream dictionary to point to an invalid root in order to detect failure to recover the last valid trailer.
-
In FUTURE, treat uninitialized object handles as null
-
Adjust fuzzer Pl_Flate memory limits