-
Add C API qpdf_oh_free_buffer to release memory allocated by stream data functions
-
Add new commands --remove-metadata and --remove-info
-
In QPDFWordTokenFinder::check limit the token length
-
Tokens longer than the target cannot be a match and therefore there is no need to read to the end of token.
-
Fix bugs found during fuzzing
-
Return results rather than using reference parameters. Fixes bug in #1272 where parameters were not reinitialized when calling read_bad_entry from read_entry.
-
In QPDFParser add a limit on total number of errors in one object
-
Currently, QPDFParser gives up attempting to parse an object if 5 near-consecutive bad tokens are encountered. Add a limit of a total of 15 bad tokens in a single object before giving up.
-
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.