aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf/qpdf.testcov
AgeCommit message (Collapse)Author
2018-02-19Add C API for checking PDF filesJay Berkenbilt
2018-02-19More robust handling of type errorsJay Berkenbilt
Give objects descriptions and context so it is possible to issue warnings instead of fatal errors for attempts to access objects of the wrong type.
2018-02-19Detect and report bad tokens in content normalizationJay Berkenbilt
2018-02-19Add coalesce contents capabilityJay Berkenbilt
2018-02-19Refactor parseContentStreamJay Berkenbilt
2018-02-19Use inline image token type in tokenizer filterJay Berkenbilt
2018-02-19Inline image token typeJay Berkenbilt
2018-02-19Lexer enhancements: EOF, comment, spaceJay Berkenbilt
Significant enhancements to the lexer to improve EOF handling and to support comments and spaces as tokens. Various other minor issues were fixed as well.
2018-01-29Minor fixes to tokenizerJay Berkenbilt
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