Commit Graph

3461 Commits

Author SHA1 Message Date
m-holger f0bc2f11ef Expose QPDFObjectHandle::writeJSON 2024-02-16 14:09:28 +00:00
m-holger c06653c3ab Refactor QPDF::writeJSON 2024-02-16 12:00:37 +00:00
m-holger b9bc05356a Refactor QPDF::writeJSONStream
Use QPDF_Stream::writeStreamJSON.
Factor out the json_stream_data == qpdf_sj_file case.
2024-02-16 11:51:10 +00:00
m-holger b15d0bf6e1 Add new method QPDF_Stream::writeStreamJSON
(Replacing the temporary implementation from the last commit.)
2024-02-16 11:37:50 +00:00
m-holger 920e929864 Reimplement QPDF_Stream::getStreamJSON in terms of writeStreamJSON
writeStreamJSON is a temporary implementation minimally adapted from
getStreamJSON.
2024-02-16 11:07:20 +00:00
m-holger 9589fad1e5 Reimplement QPDFObjectHandle::getJSON in terms of writeJSON 2024-02-16 11:00:20 +00:00
m-holger 9379b76811 Add additional name token JSON tests
Also, test writing JSON v1 files and files with deeply nested containers.
2024-02-16 10:54:08 +00:00
m-holger d28969bf37 Add additional sparse array JSON tests 2024-02-16 10:53:52 +00:00
m-holger 431987475b Add new method QPDF_Name::analyzeJSONEncoding
Provide a custom method to check whether a name is valid utf8. Integrate
checking for characters that need to be escaped in JSON.
2024-02-16 10:52:44 +00:00
m-holger e2737ab646 Add new writeJSON methods
Create an alternative to getJSON to allow an object handle to be written as JSON without the overhead of creating a JSON object.
2024-02-16 10:51:25 +00:00
m-holger 9e90007a4a Add new private class JSON::Writer
Create a simple utility class for writing JSON to a pipeline.
2024-02-16 10:32:41 +00:00
Jay Berkenbilt 5a29b7f9dd Add comment about incremental updates with mixed xref types 2024-02-12 08:35:07 -05:00
Jay Berkenbilt b1dad0de2a Fix previous fix to setting checkbox value (fixes #1056)
The code accepted values other than /Yes but still used /Yes as the
checked value instead of obeying the normal appearance dictionary.
2024-02-11 15:49:44 -05:00
Jay Berkenbilt b1b789df42 Detect end of input inside an unfinished JSON string 2024-02-06 15:30:29 -05:00
Jay Berkenbilt 3490090fbc Detect JSON object whose value is an indirect object 2024-02-06 15:12:41 -05:00
Jay Berkenbilt 7ae095fa09 Fix JSON parser error found by fuzz 2024-02-04 17:27:49 -05:00
Jay Berkenbilt f0fb19df9d Add json fuzzer with seed files from #1123 and test suite
...as well as some cases generated in CI from earlier attempts at
fixing this.
2024-02-04 17:27:49 -05:00
Jay Berkenbilt cb0f390cc1 Handle parse error stream data (fixes #1123)
A parse error in stream data in which stream data contained a nested
object would cause a crash because qpdf was not correctly updating its
internal state. Rework the QPDF json reactor to not be sensitive to
parse errors in this way.
2024-02-04 17:27:49 -05:00
Jay Berkenbilt 7caa9ddf5a Format code 2024-02-04 16:12:01 -05:00
Jay Berkenbilt 532cc58d7e
Merge pull request #1138 from m-holger/j_key
Allow "n:/pdf-syntax" JSON syntax for dictionary keys
2024-02-03 13:09:31 -05:00
Jay Berkenbilt aea885aab2
Merge pull request #1136 from m-holger/todo
Update TODO.md regarding indirect nulls in QPDF_Dictionary
2024-02-03 12:28:51 -05:00
Jay Berkenbilt e641a883cd Exercise more parameters of the tiff predictor in fuzz 2024-02-03 11:27:42 -05:00
Jay Berkenbilt b1ec5ba883 Merge branch 'fz' of github.com:m-holger/qpdf into fz 2024-02-03 11:21:35 -05:00
m-holger 3279c21e13 Add additional test case for fuzz tests 2024-02-03 11:20:57 -05:00
Jay Berkenbilt 4dc0c5684e Add issue about splitting pages to memory 2024-02-03 11:20:57 -05:00
m-holger 8ff20b0089 Allow "n:/pdf-syntax" JSON syntax for dictionary keys 2024-01-29 13:22:58 +00:00
m-holger e93c5ec993 Update TODO.md regarding indirect nulls in QPDF_Dictionary 2024-01-28 14:06:37 +00:00
m-holger d946ad6c30 In Pl_TIFFPredictor::processRow buffer output 2024-01-27 17:16:53 +00:00
m-holger 20ca1e8644 In Pl_TIFFPredictor::processRow optimize 8 bits_per_sample case 2024-01-27 12:04:36 +00:00
m-holger b7abb12f55 In Pl_TIFFPredictor::processRow remove special case for first column 2024-01-26 20:56:21 +00:00
m-holger c01fc3c2ae In Pl_TIFFPredictor::processRow avoid repeated vector allocation
Also, modernize for loop.
2024-01-26 20:51:29 +00:00
m-holger 2e8b5f290c In Pl_TIFFPredictor avoid repeated calls to getNext 2024-01-26 20:46:38 +00:00
m-holger 73dec35209 Simplify address arithmetic in Pl_TIFFPredictor 2024-01-26 20:44:07 +00:00
m-holger 5b7a44e1cc In Pl_TIFFPredictor remove calls to memcpy
Instead of overwriting cur_row.data() use clear and insert.
2024-01-26 20:25:15 +00:00
m-holger 902fd6df71 Change Pl_TIFFPredictor::cur_row to std::vector<unsigned char> 2024-01-26 20:20:16 +00:00
Jay Berkenbilt 4660e23262
Merge pull request #1128 from m-holger/reconstruct
Tighten checks for invalid indirect references  during xref reconstru…
2024-01-20 12:43:07 -05:00
Jay Berkenbilt 7be985b032
Merge pull request #1121 from m-holger/dj
Handle default-constructed JSON objects
2024-01-20 12:41:13 -05:00
m-holger b6a2b5d3c1 Handle default-constructed JSON objects 2024-01-18 10:06:43 +00:00
m-holger f0343565ed Tighten checks for invalid indirect references during xref reconstruction 2024-01-17 14:11:57 +00:00
Jay Berkenbilt 6b80e0f14b
Merge pull request #1127 from m-holger/parser
Tighten checks for invalid indirect references in QPDFParser
2024-01-17 08:44:50 -05:00
m-holger ed43691bf3 Tighten checks for invalid indirect references in QPDFParser 2024-01-17 13:15:13 +00:00
Jay Berkenbilt 87c07457e2
Merge pull request #1125 from m-holger/format
Update .clang-format to require braces after control statements
2024-01-17 07:57:12 -05:00
Jay Berkenbilt 9a6a1cce93
Merge pull request #1126 from m-holger/fuzz65777
Fix incorrect handling of invalid negative object ids
2024-01-17 07:54:24 -05:00
m-holger 6e3b7982db Fix incorrect handling of invalid negative object ids
Fix two errors introduced in #1110 and #1112. Since
#1110, encountering the invalid indirect reference #1110
-2147483648 n R produces an integer underflow which, if
 undetected, immediately trigger a logic error. Since
 #1112, object -1 0 R may be incorrectly identified as
 an earlier generation of itself and deleted,
 invalidating a live iterator.
2024-01-17 10:39:06 +00:00
m-holger 9e62e7a6b4 Update .clang-format to require braces after control statements 2024-01-16 12:28:34 +00:00
Jay Berkenbilt 0109e365de ChangeLog from last PR 2024-01-15 11:08:25 -05:00
Jay Berkenbilt 37cf128501 Remove extraneous blank lines 2024-01-15 11:07:49 -05:00
m-holger dca5927ba0 Tweak Handlers::json_handlers
Use std::vector instead of list and move shared pointers
2024-01-15 15:18:55 +00:00
m-holger b85a590bc5 Tweak Handlers::beginUnderOverlay and beginPages 2024-01-15 15:03:33 +00:00
m-holger a41b789995 Add new method JSON::getDictItem 2024-01-15 15:02:52 +00:00