-
Thanks to Jiri Popelka from Red Hat for sending the output of a Coverity run over qpdf.
-
Space rather than newline after xref, missing /ID in trailer for encrypted file. This enables qpdf to handle some files that xpdf can handle. Adobe reader can't necessarily handle them.
-
Even though this case is not valid according to the spec, it has been seen, and caused an internal error.
-
Rework QPDFWriter to always track old object IDs and QPDFObjGen instead of int, thus not discarding the generation number. Switch to QPDF::getCompressibleObjGen() to properly handle the case of an old object eligible for compression that has a generation of other than zero.
-
In internal code and examples, replace calls to getObjectID() and getGeneration() with calls to getObjGen() where possible.
-
This is safer than getObjectID() and getGeneration() for many uses.
-
Versions prior to 4.6 didn't allow gcc diagnostic pragmas with push and pop and to appear anywhere in the file. Just let the warning be there for those versions.
-
Remove const qualifier from getTypeCode and get getTypeName methods of QPDFObjectHandle, make them work properly for indirect objects, and exercise them much better in the test suite.
-
Make remaining calls to fopen and strerror use strerror_s and fopen_s on MSVC.
-
fopen was previuosly called wrapped by QUtil::fopen_wrapper, but QUtil::safe_fopen does this itself, which is less cumbersome.
-
Remove needless calls to open, close, and fileno; call remove instead of unlink.
-
Put a specific comment marker next to every piece of code that MSVC gives warning 4996 for. This warning is generated for calls to functions that Microsoft considers insecure or deprecated. This change is in preparation for fixing all these cases even though none of them are actually incorrect or insecure as used in qpdf. The comment marker makes them easier to find so they can be fixed in subsequent commits.
-
Make them safer by avoiding any internal limits and replacing sprintf with std::ostringstream.
-
Add QUtil::hex_encode to encode binary data has a hexadecimal string, and use it in place of sprintf where possible.
-
When caching objects in an object stream, only cache objects that still resolve to that stream. See Changelog mod from this commit for details.
-
Fix exit status for case of errors without warnings, continue after errors when possible, add test case for parsing a file with content stream errors on some but not all pages.
-
Change object type Keyword to Operator, and place the order of the object types in object_type_e in the same order as they are mentioned in the PDF specification. Note that this change only breaks backward compatibility with code that has not yet been released.
-
Add virtual methods to QPDFObject, wrappers to QPDFObjectHandle, and implementations to all the QPDF_Object types.
-
This method allows parsing of the PDF objects in a content stream or array of content streams.
-
These object types are to facilitate content stream parsing.
-
Next released version will be 4.1.0 since new APIs are being added.
-
Fixed spelling errors in previously published commits and update spelling dictionary
-
When preparing the trailer for writing to the new file, trim a copy of the trailer instead of the original file's trailer.