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
m-holger
61f7d97b20
Merge pull request #1283 from m-holger/fuzz
...
Fix #1242
2024-09-17 00:19:52 +01:00
m-holger
54ac92eb1d
Merge pull request #1271 from m-holger/rsl
...
Fix QPDF::recoverStreamLength
2024-09-16 20:38:14 +01:00
m-holger
75091093fe
Merge pull request #1280 from m-holger/streams
...
Tidy QPDF_Stream
2024-09-16 19:52:24 +01:00
m-holger
ddfa3a24f0
Merge pull request #1281 from m-holger/input
...
Replace some std::shared_ptr parameters with reference parameters
2024-09-16 17:59:53 +01:00
m-holger
9ba6e070a1
Fix #1242
...
Ensure QPDF m->all_pages and invalid_page_found are reset if
getAllPagesInternal throws an exception.
Fixes fuzz case 71624.
2024-09-16 16:04:43 +01:00
m-holger
a238985087
Merge pull request #1277 from m-holger/objtable
...
Refactor ObjTable
2024-09-06 00:39:59 +01:00
m-holger
5d25aac6c7
In QPDFParser constructor change input parameter to InputSource&
2024-09-05 15:30:32 +01:00
m-holger
258343fcc9
In QPDF::readToken change input parameter to InputSource&
2024-09-05 15:23:28 +01:00
m-holger
20edfb3f91
In QPDF::damagedPDF change input parameter to InputSource&
2024-09-05 15:13:30 +01:00
m-holger
83e0f8da88
Tidy QPDF_Stream
...
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.
2024-09-04 16:00:57 +01:00
m-holger
7f3b05ddb4
Merge pull request #1279 from m-holger/fuzz
...
Split qpdf_fuzzer into six separate fuzzers
2024-09-03 23:58:33 +01:00
m-holger
d8d73679e7
Split qpdf_fuzzer into six separate fuzzers
2024-09-03 14:21:06 +01:00
m-holger
7777ea84e7
Add new method ObjTable::emplace_back
2024-08-31 21:03:37 +01:00
m-holger
4badc78aea
Remove methods ObjTable::initialize
2024-08-31 15:01:45 +01:00
m-holger
0d08f65cb8
Add new method ObjTable::resize
2024-08-31 14:20:16 +01:00
m-holger
68ac2179bd
In ObjTable change maximum allowable object id to std::vector<T>::max_size()
...
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.
2024-08-31 12:55:53 +01:00
m-holger
c1377176f8
Merge pull request #1276 from m-holger/obj
...
Refactor QPDFObjectHandle::getTypeName
2024-08-28 22:02:07 +01:00
m-holger
64f9b7b242
Refactor QPDFObjectHandle::getTypeName
2024-08-27 10:39:33 +01:00
m-holger
0a6ab1060f
Merge pull request #1275 from m-holger/fuzz
...
In qpdf_fuzzer and dct_fuzzer add a scan limit for Pl_DCT
2024-08-26 00:39:33 +01:00
m-holger
8ed10d71ea
In qpdf_fuzzer and dct_fuzzer add a scan limit for Pl_DCT
2024-08-25 17:03:26 +01:00
m-holger
8cb9bce780
Add new commands --remove-metadata and --remove-info
2024-08-25 13:10:11 +01:00
m-holger
fbba156ca2
Merge pull request #1273 from m-holger/fuzz
...
In QPDF::readObjectAtOffset fail early on 'expect n n obj'
2024-08-24 00:01:24 +01:00
m-holger
ef49291682
In QPDF::readObjectAtOffset fail early on 'expect n n obj'
2024-08-23 14:09:20 +01:00
m-holger
0b3debaf86
Merge pull request #1253 from m-holger/pl_t
...
Refactor Pl_QPDFTokenizer
2024-08-21 18:29:55 +01:00
m-holger
c02cb9a720
Fix QPDF::recoverStreamLength
...
Ensure the the recovered stream end is not part of a different object.
Test file is bad24.pdf with stream 4 'endstream' corrupted.
2024-08-20 15:14:01 +01:00
m-holger
42cd7a98ad
In QPDF::recoverStreamLength mark unreachable code
2024-08-20 12:52:33 +01:00
m-holger
f2228b1f88
Fix handling of hybrid reference files in QPDF::read_xrefTable
...
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.
2024-08-16 15:58:55 +01:00
m-holger
dc1ae8457d
Merge pull request #1268 from m-holger/hc
...
Fix test_driver comment
2024-08-15 19:01:38 +01:00
m-holger
6b7a05a379
Fix test_driver comment
2024-08-15 18:59:55 +01:00
m-holger
ac42965052
Merge pull request #1265 from m-holger/fuzz
...
If Pl_Flate memory limit is exceeded do not attempt 'finish' processing
2024-08-10 00:11:33 +01:00
m-holger
0eb29c7357
If Pl_Flate memory limit is exceeded do not attempt 'finish' processing
2024-08-09 11:08:30 +01:00
m-holger
0e9b9dab33
Merge pull request #1263 from m-holger/fuzz
...
Guard against 0 byte writes in Pl_Buffer and Pl_String
2024-08-08 01:09:15 +01:00
m-holger
0663f1f8db
Guard against 0 byte writes in Pl_Buffer and Pl_String
2024-08-07 16:19:16 +01:00