Jay Berkenbilt
abb3191c32
Add tests for previous memory issues
...
Now that the test suite runs clean with address sanitizer, add some
test cases that previously were used to expose memory errors.
2017-08-28 22:28:12 -04:00
Jay Berkenbilt
4f8c734d8e
Missing free in some test code
...
There was a missing free causing a memory leak in some test code. The
memory leak was not in library code.
2017-08-26 22:04:49 -04:00
Jay Berkenbilt
ad527a64f9
Parse iteratively to avoid stack overflow ( fixes #146 )
2017-08-25 21:56:45 -04:00
Jay Berkenbilt
85f05cc57f
Detect xref pointer infinite loop ( fixes #149 )
2017-08-25 19:58:31 -04:00
Jay Berkenbilt
e452d9dca6
Spell check
2017-08-22 14:22:20 -04:00
Jay Berkenbilt
fabff0f3ec
Limit token length during xref recovery
...
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-22 14:13:10 -04:00
Jay Berkenbilt
6884ad2ead
Fix logic error in recovery
...
A stray semicolon caused a condition to be incorrectly applied during
stream length recovery.
2017-08-22 07:19:41 -04:00
Jay Berkenbilt
8288a4eb3a
Update copyright to 2017
2017-08-21 21:18:47 -04:00
Jay Berkenbilt
f08ce00e62
Add tests for PCLm
...
Files written in PCLm mode have to be created in a very specific way.
qpdf doesn't know how to create PCLm files from scratch. All it knows
how to do is to write an already valid file in a suitable way.
Therefore there is no command-line support for PCLm.
2017-08-21 21:05:47 -04:00
Jay Berkenbilt
ddc6cf0cf6
Precheck streams by default
...
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-21 17:44:22 -04:00
Jay Berkenbilt
9744414c66
Enable finer grained control of stream decoding
...
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-21 17:44:22 -04:00
Jay Berkenbilt
e0d1cd1f4b
Fix test case
...
There was an unintended recoverable error in a test file. It wasn't
hurting anything, but it was obscuring the actual intent of the test.
2017-08-19 14:50:55 -04:00
Jay Berkenbilt
cfa2eb97fb
Add page rotation ( fixes #132 )
2017-08-12 22:57:38 -04:00
Jay Berkenbilt
d926d78059
Add --verbose flag
2017-08-12 12:30:18 -04:00
Jay Berkenbilt
2c6fe1805a
Support groups of pages in --split-pages ( fixes #30 )
2017-08-12 12:08:23 -04:00
Jay Berkenbilt
df33c368b4
Change --single-pages to --split-pages
...
This is in preparation for implementing page groups.
2017-08-12 11:49:04 -04:00
Jay Berkenbilt
ad82706003
Note about veraPDF
2017-08-12 11:35:02 -04:00
Jay Berkenbilt
8249a26d69
Fix infinite loop in QPDFWriter ( fixes #143 )
2017-08-12 08:36:36 -04:00
Jay Berkenbilt
36b3fe5af7
Fix --newline-before-endstream option ( fixes #133 )
...
Add a newline unconditionally before endstream even if a newline was
already written as part of the stream data.
2017-08-11 20:57:05 -04:00
Jay Berkenbilt
46611f0710
Prevent a division by zero error ( fixes #141 )
...
Bad /W in an xref stream could cause a division by zero error. Now
this is handled as a special case.
2017-08-11 20:11:19 -04:00
Jay Berkenbilt
8fe0b06cd8
Pad encryption parameters that are too short ( fixes #96 )
2017-08-11 19:53:56 -04:00
Jay Berkenbilt
0c99cf874b
Sanitize test suite
...
Remove problematic test files
2017-08-11 07:41:11 -04:00
Jay Berkenbilt
30f109e244
Read xref table without PCRE
...
Also accept more errors than before.
2017-08-10 21:30:32 -04:00
Jay Berkenbilt
ca5b1d267a
Improve stream length recovery
...
Eliminate PCRE and find endobj not preceded by endstream. Be more lax
about placement of endstream and endobj.
2017-08-10 21:30:32 -04:00
Jay Berkenbilt
3082e4e606
Find xref without PCRE
2017-08-10 21:30:32 -04:00
Jay Berkenbilt
90840be594
Find lindict without PCRE
2017-08-10 21:30:32 -04:00
Jay Berkenbilt
03aa9679ac
Find starxref without PCRE
2017-08-10 21:30:32 -04:00
Jay Berkenbilt
1765c6ec20
Find header without PCRE
2017-08-10 21:30:32 -04:00
Jay Berkenbilt
ef8ae5449d
Allow QPDFTokenizer::readToken to return bad tokens
...
Sometimes we want to ignore bad tokens rather than having them throw
an exception. A coverage case is commented out here and added in a
later commit.
2017-08-10 19:01:41 -04:00
Jay Berkenbilt
c5dc6d8067
Remove unused PointerHolder interface
...
Also fix a bug resulting from incorrect use of PointerHolder because
of this unused parameter.
2017-08-10 19:01:38 -04:00
Jay Berkenbilt
ff6971fb1c
Call PointerHolder constructor properly ( fixes #135 )
...
Passed arguments to the constructor in the wrong order.
2017-08-09 22:00:49 -04:00
Jay Berkenbilt
49825e5cb6
Add --split-pages option ( fixes #30 )
2017-08-05 10:22:33 -04:00
Jay Berkenbilt
a60eb552d3
Split bug tests into separate chunk
2017-08-05 10:22:33 -04:00
Jay Berkenbilt
1ec59c299d
Refactor write_output
2017-08-05 10:22:33 -04:00
Jay Berkenbilt
909daf9543
Move page spec processing earlier
2017-08-05 10:22:33 -04:00
Jay Berkenbilt
24f28f0768
Split qpdf.cc's main into reasonably sized functions
...
main() had gotten absurdly long. Split it into reasonable chunks. This
refactoring is in preparation for handling splitting output into
single pages.
2017-08-05 08:24:05 -04:00
Jay Berkenbilt
c88eaae2f2
Fix off-by-one error in --pages argument parsing ( fixes #129 )
2017-08-02 21:08:43 -04:00
Jay Berkenbilt
2d5b854468
Allow reading command-line args from files ( fixes #16 )
2017-07-29 22:23:21 -04:00
Jay Berkenbilt
5993c3e83c
Detect input file = output file ( fixes #29 )
2017-07-29 20:58:01 -04:00
Jay Berkenbilt
885b8781cc
Allow --check to coexist with and precede other operations ( fixes #42 )
2017-07-29 19:56:21 -04:00
Jay Berkenbilt
b43a0ac237
When recover stream length, indicate the length ( fixes #44 )
2017-07-29 19:15:06 -04:00
Jay Berkenbilt
f37d399d82
Add newline-before-endstream option ( fixes #103 )
2017-07-29 12:21:38 -04:00
Jay Berkenbilt
6a7d53ad2b
Handle zlib data errors better ( fixes #106 )
2017-07-29 12:19:04 -04:00
Jay Berkenbilt
07d6f770b2
Better recovery of bad stream start ( fixes #104 )
2017-07-29 12:19:04 -04:00
Jay Berkenbilt
b389268f16
Better handle split content streams ( fixes #73 )
...
When parsing content streams, allow content to be split arbitrarily
across stream boundaries.
2017-07-29 12:19:04 -04:00
Jay Berkenbilt
3a1ff5ded9
Add option to preserve unreferenced objects
2017-07-28 19:19:11 -04:00
Jay Berkenbilt
a94a729fee
Explicitly check root dictionary type
...
Very badly corrupted files may not have a retrievable root dictionary.
Handle that as a special case so that a more helpful error message can
be provided.
2017-07-28 18:03:30 -04:00
Jay Berkenbilt
7f8892525f
Add precheck streams capability
...
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-27 23:42:27 -04:00
Jay Berkenbilt
428d96dfe1
Convert many more errors to warnings
2017-07-27 22:57:55 -04:00
Jay Berkenbilt
a4fd4b91c6
Convert stream filtering errors to warnings
2017-07-27 18:43:07 -04:00