m-holger
43a88e1d28
Tweak #1287 comments
2024-09-27 11:58:46 +01:00
m-holger
638bf5f9ae
Merge pull request #1287 from mslichao/mslichao/capifreebuf
...
Add C API qpdf_oh_free_buffer to release memory allocated by stream data functions
2024-09-27 11:34:54 +01:00
m-holger
1796365713
Merge branch 'main' into mslichao/capifreebuf
2024-09-27 11:31:55 +01:00
m-holger
50d385c858
Merge pull request #1274 from m-holger/meta
...
Add new commands --remove-metadata and --remove-info
2024-09-27 11:26:34 +01:00
m-holger
0198ff7e48
Merge pull request #1291 from m-holger/fuzz
...
In QPDFWordTokenFinder::check limit the token length
2024-09-24 01:55:36 +01:00
m-holger
0aa6b67eea
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.
2024-09-24 01:32:32 +01:00
m-holger
0e92cf6bf3
Merge pull request #1289 from m-holger/fuzz
...
Fix bugs found during fuzzing
2024-09-20 15:52:14 +01:00
m-holger
477fbd9839
Add additional fuzz test cases
2024-09-20 15:28:53 +01:00
m-holger
21f176d374
Add sanity check on trailer /Size entry
2024-09-20 15:28:49 +01:00
m-holger
44a1395194
Refactor QPDF::Xref_table::read_entry and read_bad_entry
...
Return results rather than using reference parameters.
Fixes bug in #1272 where parameters were not reinitialized when calling
read_bad_entry from read_entry.
2024-09-20 15:28:34 +01:00
Chao Li(VISION)
f6ae1ff16a
Rename to qpdf_oh_free_buffer
2024-09-20 04:53:32 +00:00
m-holger
7d34b89a69
Merge pull request #1288 from m-holger/fuzz
...
In QPDFParser add a limit on total number of errors in one object
2024-09-19 23:58:26 +01:00
m-holger
06a2d955fc
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.
2024-09-19 17:28:26 +01:00
Chao Li(VISION)
8c1cde4ec3
Add C API qpdf_free_buffer to release memory allocated by stream data functions
2024-09-19 12:21:49 +00:00
m-holger
ff2a78f579
Merge pull request #1272 from m-holger/xref_table
...
Refactor QPDF xref table
2024-09-19 07:58:48 +01:00
m-holger
cb7180b1ba
Move QPDF::ObjCache::end_before_space etc to Xref_table
...
Also, delay adjustments for compressed objects until needed by
linearization checks.
2024-09-18 10:25:38 +01:00
m-holger
28c13f5492
Refactor Xref_table::subsections
...
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.
2024-09-18 10:25:38 +01:00
m-holger
ad10fa3006
Rename Xref_table::subsections to bad_subsections
2024-09-18 10:25:38 +01:00
m-holger
0f0747b3ae
Refactor QPDF::getXRefTable
2024-09-18 10:25:38 +01:00
m-holger
965f0fcd63
Refactor QPDF::recoverStreamLength
2024-09-18 10:25:38 +01:00
m-holger
98c14e7740
Refactor QPDF::checkLinearizationInternal
2024-09-18 10:25:38 +01:00
m-holger
7775aec33e
Refactor QPDFWriter::preserveObjectStreams
2024-09-18 10:25:38 +01:00
m-holger
a1b646fcca
Refactor Xref_table::Entry
...
Replace QPDFXRefEntry with a std::variant of structs.
2024-09-18 10:25:38 +01:00
m-holger
6b9eb14c76
Remove Xref_table::deleted_objects
2024-09-18 10:25:38 +01:00
m-holger
c0020cb17d
Change Xref_table::table to std::vector
...
Temporarily disable 3 specific-bugs tests. Remove 'xref size mismatch'
test.
2024-09-18 10:25:38 +01:00
m-holger
91822ae6a1
Refactor Xref_table::reconstruct
...
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.
2024-09-18 10:25:38 +01:00
m-holger
39df5936fe
Refactor Xref_table::read_table
...
Rename to Xref_table::process_section.
Process trailer processing subsection entries.
2024-09-18 10:25:38 +01:00
m-holger
ed65619428
Add new methods Xref_table::subsections
...
Calculate all subsections before reading subsection entries.
Duplicates some warnings for the time being.
2024-09-18 10:25:38 +01:00
m-holger
cee8d5c92d
Refactor Xref_table::parse_first
...
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.
2024-09-18 10:25:38 +01:00
m-holger
0c56cec6c3
Refactor QPDF::createFromJSON
2024-09-18 10:25:38 +01:00
m-holger
88fd7ca99a
Refactor QPDF::emptyPDF
2024-09-18 10:25:38 +01:00
m-holger
39abb11376
Make all QPDF::Xref_table data members private
2024-09-18 10:25:38 +01:00
m-holger
82419ca013
Add new data member QPDF::Xref_table::table
2024-09-18 10:25:38 +01:00
m-holger
742cc7d87b
Add temporary methods QPDF::Xref_table::size and as_map
...
Also, remove redundant clearing of the xref tabl during QPDF destruction.
2024-09-18 10:25:38 +01:00
m-holger
fa03ed3891
Refactor QPDF::removeObject
...
Do not remove object from xref table as this is only required when the
the method is called from within QPDF::Xref_table.
2024-09-18 10:25:38 +01:00
m-holger
5fc257f0f7
Add QPDF::Xref_table methods type, offset, stream_number and stream_index
2024-09-18 10:25:38 +01:00
m-holger
d64b14912d
Move QPDF::readTrailer to QPDF::Xref_table
2024-09-18 10:25:38 +01:00
m-holger
3ddc51a9dc
Move QPDF::resolveXRefTable to QPDF::Xref_table
2024-09-18 10:25:38 +01:00
m-holger
ad4688866d
Add new method QPDF::Xref_table::show
2024-09-18 10:25:38 +01:00
m-holger
1e2dcbf03e
Add QPDF::Xref_table members file and tokenizer
2024-09-18 10:25:38 +01:00
m-holger
b1d845e708
Split QPDF member file into file and file_sp to facilitate aliasing
...
To be encapsulated later.
2024-09-18 10:25:37 +01:00
m-holger
db06e075ea
Move xref table initialisation from QPDF::parse to QPDF::Xref_table
2024-09-18 10:25:37 +01:00
m-holger
a4db9b3149
Move QPDF::read_xref to QPDF::Xref_table
2024-09-18 10:25:37 +01:00
m-holger
f30a5eb05a
Move QPDF::read_xrefStream to QPDF::Xref_table
2024-09-18 10:25:37 +01:00
m-holger
253d3aee8f
Move QPDF::read_xrefEntry to QPDF::Xref_table
2024-09-18 10:25:37 +01:00
m-holger
3fbff84594
Move QPDF::reconstruct_xref to QPDF::Xref_table
...
Also, when recovering trailer from xref streams, pick the last valid
trailer encountered rather than the first.
2024-09-18 10:25:37 +01:00
m-holger
1e072e223a
Move QPDF::insertXrefEntry etc to QPDF::Xref_table
2024-09-18 10:25:37 +01:00
m-holger
0ac37bc956
Add new class QPDF::Xref_table
2024-09-18 10:25:37 +01:00
m-holger
f8e6274a2e
Move QPDF inner class definitions to new QPDF_private.hh
2024-09-18 10:25:37 +01:00
m-holger
d42fda60d5
Amend "recover file with xref stream" test
...
Change first xref stream dictionary to point to an invalid root in order
to detect failure to recover the last valid trailer.
2024-09-18 10:25:37 +01:00