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
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
m-holger
d1b8bd44af
Merge pull request #1249 from m-holger/example
...
Tidy qpdfjob-remove-annotations example
2024-08-06 19:35:10 +01:00
m-holger
6aa6c01303
Merge pull request #1171 from m-holger/unresolved
...
Refactor the creation of unresolved objects
2024-08-06 14:39:16 +01:00
m-holger
08eb6844c7
Add new qpdf_fuzzer test cases
2024-08-06 12:26:37 +01:00
m-holger
06001ed25b
Refactor the creation of unresolved objects
...
Create unresolved objects only for objects in the xref table (except during
parsing of the xref table). Do not add indirect nulls into the the object
cache as the result of a cache miss during a call to getObject except
during parsing or creation/updating from JSON. To support this behaviour,
add new private methods getObjectForParser and getObjectForJSON.
As a result of this change, dangling references are treated as direct nulls
rather than indirect nulls.
2024-08-06 12:22:09 +01:00
m-holger
87ee8ad071
In QPDFParser constructor add add parameter parse_pdf
...
Prepare for treating indirect references differently depending on whether
we are parsing a PDF file (in which case reference to objects not in the
xref table are null even if they are in the object cache) or whether parse
from user code (in which case an indirect reference can refer to a user
created object).
2024-08-06 10:02:07 +01:00
m-holger
77d1a0cf24
Merge pull request #1262 from m-holger/i1261
...
Fix writing reals with trailing '.' as JSON (fixes #1261 )
2024-08-06 01:47:04 +01:00
m-holger
7a1ec75ee1
Fix writing reals with trailing '.' as JSON ( fixes #1261 )
2024-08-06 01:09:48 +01:00
Jay Berkenbilt
84555e8bc3
Merge pull request #1259 from csfore/gcc-15-fix
...
libtests: include cstdint for GCC 15
2024-08-05 10:38:34 -04:00
Christopher Fore
6918f0b7eb
libtests: include cstdint for GCC 15
...
GCC 15 starts to no longer include this by default, requiring it to be
explicitly included.
Error message:
libtests/cxx11.cc:75:16: error: ‘uint8_t’ was not declared in this scope
75 | check_size<uint8_t>(1, false);
| ^~~~~~~
libtests/cxx11.cc:10:1: note: ‘uint8_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’
9 | #include <regex>
+++ |+#include <cstdint>
10 | #include <type_traits>
Signed-off-by: Christopher Fore <csfore@posteo.net>
2024-08-05 10:00:59 -04:00
m-holger
2856b288e4
Merge pull request #1258 from m-holger/fuzz
...
Adjust fuzzer memory limits and refactor Pl_RunLength::decode
2024-08-04 00:28:50 +01:00
m-holger
3bab4cf394
Refactor Pl_RunLength::decode
...
Buffer output locally.
Add qpdf_fuzzer test case.
2024-08-03 15:52:45 +01:00
m-holger
5edb548148
Reduce Pl_DCT and Pl_Flate memory limits during fuzzing
...
Also, add additional qpdf_fuzzer test case.
2024-08-03 14:09:31 +01:00
m-holger
34f557a83f
Merge pull request #1257 from m-holger/fuzz
...
In QPDFWriter::willFilterStream remember unfilterable streams
2024-08-03 01:10:20 +01:00
m-holger
99f3a7b5a3
In QPDFWriter::writeLinearized remember whether streams are filtered
2024-08-02 21:05:17 +01:00
m-holger
634d924986
In QPDFWriter::willFilterStream remember unfilterable streams
2024-08-02 19:23:17 +01:00
m-holger
5940c53fed
Merge pull request #1255 from m-holger/fuzz
...
Refactor xref reconstruction
2024-07-29 01:04:53 +01:00
m-holger
2bb9e06d1e
In qpdf_fuzzer add a memory limit for Pl_Flate
2024-07-28 19:54:38 +01:00
m-holger
bc68003cb3
Add additional qpdf_fuzzer test case
2024-07-28 18:10:02 +01:00
m-holger
aa4f288291
Refactor xref reconstruction
...
Avoid unnecessary rescanning of lines and repositioning of input file.
Limit max size of tokens.
2024-07-28 18:03:59 +01:00
m-holger
bbe732c015
Merge pull request #1254 from m-holger/fuzz
...
Adjust qpdf_fuzzer warnings limit
2024-07-28 01:51:54 +01:00
m-holger
f8518d3677
Adjust qpdf_fuzzer warnings limit
2024-07-27 21:18:06 +01:00
m-holger
1536a76071
Refactor Pl_QPDFTokenizer::finish
...
Remove unnecessary use of shared pointers and avoid unnecessary string
creation.
2024-07-27 18:55:43 +01:00
m-holger
986a253cdd
Overload QPDFTokenizer::findEI to take a InputSource&
2024-07-27 18:27:49 +01:00
m-holger
4783b22312
In ContentNormalizer::handleToken refactor handling of space tokens
...
Avoid writing each space char individually.
2024-07-27 18:06:12 +01:00
m-holger
ffe462e67e
In ContentNormalizer::handleToken refactor handling of string and name tokens
2024-07-27 16:49:27 +01:00
m-holger
959ae4b4da
Avoid unnecessary string copies in ContentNormalizer::handleToken
2024-07-27 16:33:17 +01:00
m-holger
fa9df75bd4
Merge pull request #1251 from m-holger/fuzz
...
Mark intentional unsigned integer wrapping in MD5_native::transform and adjust fuzzer memory limits
2024-07-23 00:22:31 +01:00
m-holger
4f694cdfde
In qpdf_fuzzer reduce Pl_PNGFilter and Pl_TIFFPredictor memory limits
2024-07-22 13:25:21 +01:00
m-holger
4f16961052
In MD5_native::transform disable sanitizer unsigned integer overflow checks
...
Wrap-around is intentional and generates false positives
2024-07-22 13:11:07 +01:00