2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-09-22 10:09:06 +00:00
Commit Graph

3672 Commits

Author SHA1 Message Date
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
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
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
m-holger
8f54319f7a
Merge pull request #1179 from m-holger/null
In FUTURE, treat uninitialized object handles as null
2024-09-18 10:22:04 +01:00
m-holger
4b245364ca
Merge pull request #1285 from m-holger/fuzz
Adjust fuzzer Pl_Flate memory limits
2024-09-18 00:56:25 +01:00
m-holger
68c2489b80 For qpdf fuzzers adjust the memory limit for Flate filtered streams 2024-09-18 00:13:24 +01:00
m-holger
dcf111a9bc Apply fuzzer Pl_Flate memory limit only when inflating
Fixes fuzz issue 71689.
2024-09-18 00:12:44 +01:00
m-holger
266d479735 Refactor QPDF_Array::at
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.
2024-09-17 09:59:00 +01:00
m-holger
0afaaea22a Deprecate QPDFObjectHandle::isInitialized and remove from library 2024-09-17 09:59:00 +01:00
m-holger
5a33c75b98 Add QPDFObjectHandle::operator bool 2024-09-17 09:59:00 +01:00
m-holger
bcf56e5333
Merge pull request #1269 from m-holger/hybrid
Fix handling of hybrid reference files in QPDF::read_xrefTable
2024-09-17 09:50:59 +01:00