-
This reverts commit 54cf0e519c49e3fb44c7ca1de95a1fffbafc211c, reversing changes made to c648b9a018105a3c30b3e7f3c5f8a058d3ddd92c.
-
Ghostscript 10.0.2 failed to handle the files changed in this commit, but ghostscript 10.0.4 handles them fine as do earlier versions. These files all have hybird xref in the form of a file with an xref table appended with a section that has an xref stream. They all have /PageLabels pointing to 107 0 R in the original file, with 107 higher than the highest object. The spec says that this should be treated as null, which results in /PageLabels null, which results in ghostscript errors in that version. While ghostscript 10.0.2 may be handling the file incorrectly, the file does something that's not really kosher, and it's easier to fix the files, which had not been changed since the very first open source release of qpdf, than to try to work around the issue. This was discovered with the GitHub actions runner was bumped to Ubuntu 24.04, which contains the buggy version of ghostscript. I was not able to find a specific ghostscript issue that addressed this, but the problem went away in either 10.0.3 or 10.0.4. Commenting out /PageLabels without changing offsets was a pragmatic move to avoid having to regenerate the xref tables manually. I just had to manually edit the binary xref stream to change the offset of one item (the new object 1), which I put at the end to avoid breaking other things.
-
Why did this ever work? Hard to say...perhaps a library we linked against was setting `int _dowildcard = -1;` somewhere and no longer is. Apparently linking with CRT_glob.o has been the way to do this for a very long time, and we've just been lucky that it worked all this time.
-
Validate key length in Pl_AES_PDF constructor
-
Fix gratuitous calls to bad_subsections in Xref_table::subsections
-
Add inner class QPDF::Objects to encapsulate reading and managing of objects
-
Also, make obj_cache private and rename to table.
-
Move methods responsible for loading or keeping track of objects to QPDF_objects.cc.
-
Add new protected inline method Pipeline::next
-
Also, tidy pipeline constructors and make subclasses final where possible.
-
Add additional xref and object stream sanity checks
-
Tweak #1287 comments
-
Add C API qpdf_oh_free_buffer to release memory allocated by stream data functions
-
Add new commands --remove-metadata and --remove-info
-
In QPDFWordTokenFinder::check limit the token length
-
Tokens longer than the target cannot be a match and therefore there is no need to read to the end of token.
-
Fix bugs found during fuzzing
-
Return results rather than using reference parameters. Fixes bug in #1272 where parameters were not reinitialized when calling read_bad_entry from read_entry.
-
In QPDFParser add a limit on total number of errors in one object