2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-11-09 14:50:58 +00:00
Commit Graph

3584 Commits

Author SHA1 Message Date
m-holger
0663f1f8db Guard against 0 byte writes in Pl_Buffer and Pl_String 2024-08-07 16:19:16 +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
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
m-holger
b3ab5cd216
Merge pull request #1248 from m-holger/hk
Update TODO.md
2024-07-20 15:21:00 +01:00
m-holger
16fe38b8e3 Update TODO.md with pages tree / fuzz discussions
Also, remove closed fuzz cases.
2024-07-19 15:04:47 +01:00
m-holger
9ce18e41f4
Merge pull request #979 from m-holger/const
In FUTURE make various QPDFObjectHandle methods const
2024-07-19 10:50:08 +01:00
m-holger
5be057caf0
Merge pull request #1247 from m-holger/fuzz
Adjust fuzzer warning and memory limits
2024-07-18 22:24:54 +01:00
m-holger
9ac506509b
Merge pull request #1240 from m-holger/i1238
Fix QPDFOutlineDocumentHelper::resolveNamedDest  (fixes #1238)
2024-07-18 22:24:16 +01:00
m-holger
30e187b458 Rename fuzz test case 2024-07-18 16:50:37 +01:00
m-holger
34729e37e0 Limit memory used by Pl_PNGFilter and Pl_TIFFPredictor during fuzzing 2024-07-18 16:50:30 +01:00
m-holger
fe1fffe8db Change QPDF max_warnings into a hard limit
Throw damagedFile if max_warnings is exceeded. Change qpdf_fuzzer warnings limit to
limit to 500.
2024-07-18 16:50:08 +01:00
m-holger
bcf81a1423
Merge pull request #1242 from m-holger/fuzz
Tighten page tree checks
2024-07-17 00:59:56 +01:00
m-holger
992b7911ce Limit the number of warnings in json_fuzzer before giving up 2024-07-16 15:36:58 +01:00
m-holger
e14e828c3d Add further fuzz tests 2024-07-16 14:52:09 +01:00
m-holger
25e11a444a Throw an exception if the root of the pages tree misses the /Kids array 2024-07-16 14:44:47 +01:00
m-holger
7f2d76b78d Remove non-dictionary objects from pages tree 2024-07-16 14:35:32 +01:00
m-holger
01353e114f
Merge pull request #1241 from m-holger/fuzz
Add further sanity checks to QPDF::reconstruct_xref
2024-07-14 23:40:29 +01:00
m-holger
f3cbaafcac Fix QPDFOutlineDocumentHelper::resolveNamedDest (fixes #1238)
Handle case where named destination is a dictionary with /D entry.

Test case is hand-edited outlines-with-old-root-dests.pdf with modified
object 107.
2024-07-14 12:15:45 +01:00
m-holger
186fca6d8d Add further sanity checks to QPDF::reconstruct_xref
Run getAllPages as sanity check and throw an exception if too many
warnings are generated or no pages are found.
2024-07-13 14:51:14 +01:00
m-holger
963574f27f Refactor QPDFOutlineDocumentHelper::resolveNamedDest 2024-07-13 11:34:02 +01:00
m-holger
f4e468b180
Merge pull request #1239 from m-holger/fuzz
Add further sanity check to QPDF::reconstruct_xref
2024-07-12 00:00:20 +01:00
m-holger
722148de3d Further limit size of uncompressed JPEG for fuzzing
Try a  limit of 50MB. For very large limits processing time before
damage is encountered may exceed oss-fuzz limits.
Add further test cases.
2024-07-11 14:32:22 +01:00
m-holger
e914bbbbbc Add further sanity check to QPDF::reconstruct_xref
If reconstruct_xref generates more than 1000 warnings give up because the
file is so severely damaged that there is very little point continuing.
2024-07-11 13:25:07 +01:00
m-holger
205bd6fb61
Merge pull request #1237 from m-holger/fuzz
Add extra sanity check on pages tree
2024-07-11 01:02:27 +01:00
m-holger
c2c1618e08 Add extra sanity check on pages tree
Reject non-dictionary Page and Pages objects.

Also add additional qpdf_fuzzer test cases.
2024-07-10 19:03:23 +01:00
m-holger
1ec5d3daa8
Merge pull request #1236 from m-holger/fuzz
Add additional xref reconstruction sanity checks and fuzz test cases
2024-07-10 00:29:37 +01:00
m-holger
2b6500ea17 In Pl_DCT::decompress refactor handling of corrupt data
If throw_on_corrupt is set, use a custom implementation of libjeg's
emit_message procedure to throw an exception when the first corrupt data
warning is encountered.
2024-07-09 20:55:51 +01:00
m-holger
7172dbd4e0 Add additional fuzzer test cases
Add test case for oss-fuzz 15471 and 69977a
2024-07-09 17:17:10 +01:00
m-holger
2e378d920d Add additional sanity check during xref reconstruction
Check that xref table is not empty after recovery. Empty xref tables
disable other sanity checks.
2024-07-09 17:01:44 +01:00