aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf/qpdf.testcov
AgeCommit message (Collapse)Author
2018-01-14Support TIFF Predictor (fixes #171)Jay Berkenbilt
2017-09-12Update C API with new QPDFWriter methodsJay Berkenbilt
2017-08-22Limit token length during xref recoveryJay Berkenbilt
While scanning the file looking for objects, limit the length of tokens we allow. This prevents us from getting caught up in reading a file character by character while digging through large streams.
2017-08-21Precheck streams by defaultJay Berkenbilt
There is no need for a --precheck-streams option. We can do the precheck without imposing any penalty, only re-encoding the stream if it fails the first time.
2017-08-21Enable finer grained control of stream decodingJay Berkenbilt
This commit adds several API methods that enable control over which types of filters QPDF will attempt to decode. It also adds support for /RunLengthDecode and /DCTDecode filters for both encoding and decoding.
2017-08-13Add page rotation (fixes #132)Jay Berkenbilt
2017-08-12Change --single-pages to --split-pagesJay Berkenbilt
This is in preparation for implementing page groups.
2017-08-12Fix infinite loop in QPDFWriter (fixes #143)Jay Berkenbilt
2017-08-12Pad encryption parameters that are too short (fixes #96)Jay Berkenbilt
2017-08-11Read xref table without PCREJay Berkenbilt
Also accept more errors than before.
2017-08-11Find lindict without PCREJay Berkenbilt
2017-08-11Find starxref without PCREJay Berkenbilt
2017-08-05Add --split-pages option (fixes #30)Jay Berkenbilt
2017-07-30Allow reading command-line args from files (fixes #16)Jay Berkenbilt
2017-07-30Detect input file = output file (fixes #29)Jay Berkenbilt
2017-07-29Better recovery of bad stream start (fixes #104)Jay Berkenbilt
2017-07-29Better handle split content streams (fixes #73)Jay Berkenbilt
When parsing content streams, allow content to be split arbitrarily across stream boundaries.
2017-07-29Add option to preserve unreferenced objectsJay Berkenbilt
2017-07-28Add precheck streams capabilityJay Berkenbilt
When requested, QPDFWriter will do more aggress prechecking of streams to make sure it can actually succeed in decoding them before attempting to do so. This will allow preservation of raw data even when the raw data is corrupted relative to the specified filters.
2017-07-28Convert many more errors to warningsJay Berkenbilt
2017-07-28Convert stream filtering errors to warningsJay Berkenbilt
2017-07-28Convert object parsing errors to warningsJay Berkenbilt
QPDFObjectHandle::parseInternal now issues warnings instead of throwing exceptions for all error conditions that it finds (except internal logic errors) and has stronger recovery for things like invalid tokens and malformed dictionaries. This should improve qpdf's ability to recover from a wide range of broken files that currently cause it to fail.
2017-07-26Detect recursion loops resolving objects (fixes #51)Jay Berkenbilt
During parsing of an object, sometimes parts of the object have to be resolved. An example is stream lengths. If such an object directly or indirectly points to the object being parsed, it can cause an infinite loop. Guard against all cases of re-entrant resolution of objects.
2017-07-26Handle object ID 0 (fixes #99)Jay Berkenbilt
This is CVE-2017-9208. The QPDF library uses object ID 0 internally as a sentinel to represent a direct object, but prior to this fix, was not blocking handling of 0 0 obj or 0 0 R as a special case. Creating an object in the file with 0 0 obj could cause various infinite loops. The PDF spec doesn't allow for object 0. Having qpdf handle object 0 might be a better fix, but changing all the places in the code that assumes objid == 0 means direct would be risky.
2015-10-31Implement deterministic IDJay Berkenbilt
For non-encrypted files, determinstic ID generation uses file contents instead of timestamp and file name. At a small runtime cost, this enables generation of the same /ID if the same inputs are converted in the same way multiple times.
2013-12-26Avoid traversing same object twice when copying objectsJay Berkenbilt
This is a performance fix. The output is unchanged. Fixes #28.
2013-07-08Add --show-npages option to qpdfJay Berkenbilt
2013-07-08Allow numeric range to be omitted qpdf --pagesJay Berkenbilt
Detect a missing page range and assume 1-z.
2013-06-15Handle more broken filesJay Berkenbilt
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.
2013-06-15Handle /Outlines dictionary being a direct objectJay Berkenbilt
Even though this case is not valid according to the spec, it has been seen, and caused an internal error.
2013-06-14Bug fix: handle generation > 0 when generating object streamsJay Berkenbilt
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.
2013-02-23Bug fix: properly handle overridden compressed objectsJay Berkenbilt
When caching objects in an object stream, only cache objects that still resolve to that stream. See Changelog mod from this commit for details.
2013-01-20Add QPDFObjectHandle::parseContentStream methodJay Berkenbilt
This method allows parsing of the PDF objects in a content stream or array of content streams.
2012-12-31Update "C" API with functions for new featuresJay Berkenbilt
2012-12-31Remove /Crypt from stream filters unconditionallyJay Berkenbilt
When writing a new stream, always remove /Crypt even if we are not otherwise able to filter the stream.
2012-12-31Refactor Dictionary writing codeJay Berkenbilt
Original code was written before we could shallow copy objects, so all the filtering was done by suppressing the output of certain keys and replacing them with other keys. Now we can simplify the code greatly by modifying shallow copies of dictionaries in place.
2012-12-31Support for encryption with /V=5 and /R=5 and /R=6Jay Berkenbilt
Read and write support is implemented for /V=5 with /R=5 as well as /R=6. /R=5 is the deprecated encryption method used by Acrobat IX. /R=6 is the encryption method used by PDF 2.0 from ISO 32000-2.
2012-12-31Support files with only attachments encryptedJay Berkenbilt
Test cases added in a future commit since they depend on /R=6 support.
2012-12-31Fix infinite loop trimming passwords with ( in themJay Berkenbilt
2012-12-31Add ExtensionLevel support to version handlingJay Berkenbilt
All version operations are now fully aware of extension levels.
2012-12-31Eliminate flattenScalarReferencesJay Berkenbilt
2012-12-25Find PDF header anywhere in the first 1024 bytesJay Berkenbilt
2012-11-20Ignore objects with offset 0Jay Berkenbilt
2012-09-06Add QPDFWriter::setExtraHeaderTextJay Berkenbilt
2012-08-11Bug fix: let EOF resolve literal tokenJay Berkenbilt
Previously only whitespace and comments did it. This fix is needed for object streams whose last object is a literal (name, integer, real, string) not terminated by space or newline.
2012-07-29Improve password handlingJay Berkenbilt
Use --encryption-file-password, if given, in addition to --password as a source for passwords for files specified in --pages.
2012-07-21Implement QPDFObjectHandle::parseJay Berkenbilt
Move object parsing code from QPDF to QPDFObjectHandle and parameterize the parts of it that are specific to a QPDF object. Provide a version that can't handle indirect objects and that can be called on an arbitrary string. A side effect of this change is that the offset used when reporting invalid stream length has changed, but since the new value seems like a better value than the old one, the test suite has been updated rather than making the code backward compatible. This only effects the offset reported for invalid streams that lack /Length or have an invalid /Length key. Updated some test code and exmaples to use QPDFObjectHandle::parse. Supporting changes include adding a BufferInputSource constructor that takes a string.
2012-07-16Bug fix: preserve AES when copying encryption parametersJay Berkenbilt
2012-07-14Have QPDFWriter detect foreign objects while writingJay Berkenbilt
Throw an exception that directs the user to QPDF::copyForeignObject.
2012-07-11Support copying objects from another QPDF objectJay Berkenbilt
This includes QPDF::copyForeignObject and supporting foreign objects as arguments to addPage*.