-
Add static parse methods. Make all external access to QPDFParser through static methods. Make all non-static methods including constructors private.
-
Only build strings when needed.
-
#1349 introduced a limit on the maximum size of arrays and dictionaries contained in objects that generate errors during parsing, and #1354 reduced that limit to 5000 objects. However, the limit was only imposed once a further error was encountered. Stop adding objects to containers once the limit is reached. Fixes oss-fuzz issue 398060137
-
This improves indentation of long strings. This commit also fixes some trailing whitespace in ChangeLog.
-
Reduce the container size for which a single bad token will cause a failure from 100,000 to 5,000. Count missing dictionary keys as errors.
-
Fail if a bad token is encountered while parsing an array or dictionary with more than 100,000 elements. Fixes oss-fuzz case 388571629.
-
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.
-
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.
-
Also, don't search for /Contents name unless the result is used.
-
Also, fix test cases.
-
The new method is temporarily an (almost) complete copy of parse, which is temporarily (almost) unchanged.
-
Fixes #864. QPDFTokenizer::getValue originally had a std::string_view return type, which was changed to std::string without removing some unnecessary string creation.
-
Stop using nullptr to represent null objects. Count null array elements and trigger creation of sparse arrays if null count is greater than 100.
-
Use move semantics for dictionary creation.