2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-06-06 12:20:56 +00:00
Commit Graph

367 Commits

Author SHA1 Message Date
Jay Berkenbilt
653ce3550d Require C++-11
Includes updates to m4/ax_cxx_compile_stdcxx.m4 to make it work with
msvc, which supports C++-11 with no flags but doesn't set __cplusplus
to a recent value.
2019-11-09 08:18:02 -05:00
Jay Berkenbilt
c590dbc38e Update list of ignored fuzzer tests
Removed ones that were fixed upstream, and added a new one, all from
the jpeg library.
2019-11-03 18:59:12 -05:00
Jay Berkenbilt
d5ecaea488 Update fuzz errors in TODO 2019-10-12 19:37:40 -04:00
Jay Berkenbilt
5ce287d6bb Remove reference to automatically closed fuzz issue 2019-09-17 19:52:42 -04:00
Jay Berkenbilt
00fd9b3e03 Update C++-11 notes 2019-08-30 18:36:44 -04:00
Jay Berkenbilt
bde44c18ef Notes about C++-11 for qpdf 10 2019-08-30 12:41:25 -04:00
Jay Berkenbilt
d4c41e2624 TODO: update notes on ignored fuzz cases 2019-08-28 23:06:57 -04:00
Jay Berkenbilt
89dacd8eba Array optimization fixes performance issues (fixes #305, #311) 2019-08-18 09:00:55 -04:00
Jay Berkenbilt
8d7db4732b TODO: add note to outlines 2019-07-13 21:35:14 -04:00
Jay Berkenbilt
43ff34b49c Update TODO 2019-06-23 14:57:10 -04:00
Jay Berkenbilt
0b45dfd3b1 TODO updates 2019-06-22 21:52:50 -04:00
Jay Berkenbilt
ed8166b21e TODO/README-maintainer cleanup 2019-06-22 12:02:39 -04:00
Jay Berkenbilt
658b5bb3be QPDFWriter: clean up overloaded functions
In a small number of cases, it makes sense to replace an overloaded
function with a function that takes a default argument. We can do this
now because we've already broken binary compatibility since the last
release.
2019-06-22 10:13:27 -04:00
Jay Berkenbilt
79f6b4823b Convert remaining public classes to use Members pattern
Have classes contain only a single private member of type
PointerHolder<Members>. This makes it safe to change the structure of
the Members class without breaking binary compatibility. Many of the
classes already follow this pattern quite successfully. This brings in
the rest of the class that are part of the public API.
2019-06-22 10:13:27 -04:00
Jay Berkenbilt
864a546af6 Build with -fvisibility=hidden when supported 2019-06-21 22:29:31 -04:00
Jay Berkenbilt
45dac410b5 Remove broken QPDFTokenizer::expectInlineImage 2019-06-21 22:29:31 -04:00
Jay Berkenbilt
25dd3c6750 Remove QPDF::copyForeignObject with unused parameter 2019-06-21 22:29:31 -04:00
Jay Berkenbilt
c6cfd64503 Rename QUtil::strcasecmp to QUtil::str_compare_nocase (fixes #242) 2019-06-21 22:29:31 -04:00
Jay Berkenbilt
bd8918fffc Fix up TODO for ABI changes 2019-06-21 22:29:31 -04:00
Jay Berkenbilt
b07ad6794e Fix bugs found by fuzz tests
* Several assertions in linearization were not always true; change
  them to run time errors
* Handle a few cases of uninitialized objects
* Handle pages with no contents when doing form operations
* Handle invalid page tree nodes when traversing pages
2019-06-21 17:56:24 -04:00
Jay Berkenbilt
2c81eec45e Re-enable fuzzer testing in Windows 2019-06-21 17:32:35 -04:00
Jay Berkenbilt
1763957cbc Remove integer type task from TODO 2019-06-21 13:17:45 -04:00
Jay Berkenbilt
bbabbc2076 TODO 2019-06-18 08:44:10 -04:00
Jay Berkenbilt
d263a0493a TODO 2019-06-12 14:53:44 -04:00
Jay Berkenbilt
e61ee88dd2 Provide link to public key file 2019-05-18 08:49:30 -04:00
Jay Berkenbilt
b9b7e34743 TODO 2019-05-16 17:20:59 -04:00
Jay Berkenbilt
03e27709f3 Improve Unicode filename testing
Remove dependency on the behavior of perl for reliable creation of
Unicode file names on Windows.
2019-04-27 20:37:33 -04:00
Jay Berkenbilt
a5a016cdd2 Revert preservations of outlines with --split-pages
The preservation of outlines didn't provide very useful behavior
anyway as it copied all outlines but most didn't work. This
implementation also caused a very significant performance hit and so
is being reverted until a proper solution can be coded. The eventual
solution will not be compatible with the reverted solution anyway, so
it's best not to leave this in.
2019-04-20 21:00:43 -04:00
Jay Berkenbilt
8ce3b53cea TODO: ABI note 2019-04-20 21:00:43 -04:00
Jay Berkenbilt
e6ba0dbf61 Note about -fvisibility 2019-04-20 21:00:43 -04:00
Jay Berkenbilt
d2260925f0 TODO: make it easier to find release signing key 2019-02-25 19:52:00 -05:00
Jay Berkenbilt
8acf636b4e Incorporate improved Windows fragility workaround from qtest 2019-02-01 22:25:25 -05:00
Jay Berkenbilt
d491ed8753 TODO 2019-01-31 22:02:26 -05:00
Jay Berkenbilt
0a470d2daf Don't optimize non-8-bit images
Also add test cases for additional coverage on image optimization.
2019-01-31 21:29:28 -05:00
Jay Berkenbilt
eb49e07c0a Make inline image token exactly contain the image data
Do not include the trailing EI, and handle cases where EI is not
preceded by a delimiter. Such cases have been seen in the wild.
2019-01-31 20:28:44 -05:00
Jay Berkenbilt
5211bcb5ea Externalize inline images (fixes #278) 2019-01-31 10:38:13 -05:00
Jay Berkenbilt
b776dcd2d3 Clean up some private functions 2019-01-29 22:14:20 -05:00
Jay Berkenbilt
2d0885bc11 Clarify documentation for copyForeignObject regarding pages
Make explicit that copyForeignObject can be used on page objects and
will copy them properly but not update the pages tree.
2019-01-28 21:53:55 -05:00
Jay Berkenbilt
2712869cf9 Fix logic for when to compress object and xref streams (fixes #271) 2019-01-28 21:43:06 -05:00
Jay Berkenbilt
9e01c8bd99 TODO 2019-01-28 20:12:43 -05:00
Jay Berkenbilt
54bd37e881 TODO 2019-01-27 09:30:40 -05:00
Jay Berkenbilt
85f70cae23 TODO 2019-01-20 23:05:58 -05:00
Jay Berkenbilt
9315aa4bb0 TODO 2019-01-19 16:00:26 -05:00
Jay Berkenbilt
edc3b309bc TODO 2019-01-19 10:25:19 -05:00
Jay Berkenbilt
aad2b10800 TODO 2019-01-12 10:04:14 -05:00
Jay Berkenbilt
6c2a7b692c TODO 2019-01-10 22:35:08 -05:00
Jay Berkenbilt
854955b9b5 TODO 2019-01-07 09:52:41 -05:00
Jay Berkenbilt
0bf0f45e67 TODO 2019-01-07 07:38:03 -05:00
Jay Berkenbilt
fddbcab0e7 Mostly don't require original QPDF for copyForeignObject (fixes #219)
The original QPDF is only required now when the source
QPDFObjectHandle is a stream that gets its stream data from a
QPDFObjectHandle::StreamDataProvider.
2019-01-07 00:11:15 -05:00
Jay Berkenbilt
d81ff5aa3d TODO 2019-01-05 23:02:00 -05:00
Jay Berkenbilt
7f4d238c53 TODO 2019-01-04 21:58:22 -05:00
Jay Berkenbilt
837dcf8fc2 Don't call assert while checking linearization data (fixes #209, #231)
Instead of calling assert for problems found during checking
linearization data, throw an exception which is later caught and
issued as an error. Ideally we would handle errors more robustly, but
this is still a significant improvement.
2019-01-04 11:55:42 -05:00
Jay Berkenbilt
3dbbf9f240 TODO 2019-01-01 08:38:15 -05:00
Jay Berkenbilt
2e2223ffe1 TODO 2018-12-23 11:54:10 -05:00
Jay Berkenbilt
88fb2e5258 Workaround for fragile test on Windows 2018-10-16 11:41:00 -04:00
Jay Berkenbilt
c13a0f4467 Publish test results from AppImage build 2018-10-16 11:41:00 -04:00
Jay Berkenbilt
9b72ce09be Change artifact directory from installers to distribution 2018-10-12 08:10:08 -04:00
Jay Berkenbilt
d6dbc6b389 TODO 2018-10-11 17:27:54 -04:00
Jay Berkenbilt
e73416319b Fragile test 2018-08-14 17:22:23 -04:00
Jay Berkenbilt
3d6615b276 Pl_Buffer: reduce memory growth (fixes #228)
Rather than keeping a list of buffers for every write, accumulate
bytes in a single buffer, doubling the size of the buffer when needed
to accommodate new data.

This is not the best possible implementation, but the change was
implemented in this way to avoid changing the shape of Pl_Buffer and
thus breaking backward compatibility.
2018-08-12 17:45:43 -04:00
Jay Berkenbilt
7855e18ae2 Add detail about Unicode passwords 2018-07-01 17:25:10 -04:00
Jay Berkenbilt
9d7eef7cc6 Update TODO
Remove form flattening
Clarify splitting/merging with document level constructs
2018-06-21 16:04:54 -04:00
Jay Berkenbilt
b096e99649 buffer test: fix memory leak in test code
Forgot to delete a buffer in the test driver. There was no memory leak
or memory error in any installed code.
2018-05-05 17:43:44 -04:00
Jay Berkenbilt
1437f80560 TODO: note about MacPorts CI 2018-05-05 17:42:58 -04:00
Jay Berkenbilt
55b1d3ef16 TODO 2018-04-15 18:45:11 -04:00
Jay Berkenbilt
fa76d817c6 Update website for Žarko Gajić 2018-03-01 21:24:34 -05:00
Jay Berkenbilt
d0e99f195a More robust handling of type errors
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-18 21:06:27 -05:00
Jay Berkenbilt
5b5f45e9dd Remove lexer rewrite notes from TODO 2018-02-18 21:05:46 -05:00
Jay Berkenbilt
ebd5ed63de Add option to save pass 1 of lineariziation
This is useful only for debugging the linearization code.
2018-02-18 20:18:40 -05:00
Jay Berkenbilt
569d74d36b Allow raw encryption key to be specified
Add options to enable the raw encryption key to be directly shown or
specified. Thanks to Didier Stevens <didier.stevens@gmail.com> for the
idea and contribution of one implementation of this idea.
2018-01-14 10:21:05 -05:00
Jay Berkenbilt
512a518dd9 Update TODO 2018-01-13 20:19:11 -05:00
Jay Berkenbilt
794b649e5b Update TODO and ChangeLog. Fixes #166, #83 2017-12-25 18:29:18 -05:00
Jay Berkenbilt
d83f8f3bfa Update TODO 2017-11-27 16:49:37 -05:00
Jay Berkenbilt
0f1ce8e646 Prepare 7.0.0 release 2017-09-16 13:22:15 -04:00
Jay Berkenbilt
07c8bb2843 Additionally license under Apache License version 2.0
The Apache License version 2.0 is now the primary license for qpdf.
However, users may, at their option, continue to use Artistic version
2.0.
2017-09-14 12:59:25 -04:00
Jay Berkenbilt
d31a7b76e7 Improve message for stream decoding error
Tweak the message so that we inform the user that we are mitigating
data loss.
2017-09-12 16:03:48 -04:00
Jay Berkenbilt
eaacf94005 Update C API with new QPDFWriter methods 2017-09-12 14:30:39 -04:00
Jay Berkenbilt
278852f5aa TODO 2017-08-22 19:26:36 -04:00
Jay Berkenbilt
70949cb4cb Update TODO 2017-08-22 14:22:20 -04:00
Jay Berkenbilt
3b170ab062 Update TODO 2017-08-21 17:52:11 -04:00
Jay Berkenbilt
9f95a37e38 TODO cleanup 2017-08-21 17:48:57 -04:00
Jay Berkenbilt
389396dbbf Support Windows builds with MSYS2
Replace the old msys, mingw-w64, ActiveState perl setup with MSYS2.
This greatly simplifies the Windows build. This was facilitated by the
need to incorporate JPEG.
2017-08-21 17:44:22 -04:00
Jay Berkenbilt
39ab004336 Update TODO 2017-08-21 16:55:00 -04:00
Jay Berkenbilt
2d2f619665 Implement Pl_RunLength pipeline 2017-08-19 14:50:55 -04:00
Jay Berkenbilt
201b62fc68 Support NO_REBUILD=1 for testing without rebuild 2017-08-16 07:57:08 -04:00
Jay Berkenbilt
3388500327 Update TODO 2017-08-10 21:36:23 -04:00
Jay Berkenbilt
9a96e233b0 Remove PCRE 2017-08-10 21:30:32 -04:00
Jay Berkenbilt
8320d16cd2 Update TODO 2017-08-10 19:01:41 -04:00
Jay Berkenbilt
bd72ec98ef Update TODO 2017-07-29 12:19:04 -04:00
Jay Berkenbilt
ba78e16966 Update TODO 2017-07-28 19:32:40 -04:00
Jay Berkenbilt
ede1255a82 Update TODO 2017-07-27 23:49:46 -04:00
Jay Berkenbilt
1e831cb978 TODO: bump ABI version 2017-07-26 06:24:07 -04:00
Jay Berkenbilt
d4d7612b5b Note about std::regex attempt 2016-12-27 14:34:18 -05:00
Jay Berkenbilt
1f4a67912c Bump library soname
Also update maintainer documentation on binary compatibility testing.
2015-11-10 12:42:37 -05:00
Jay Berkenbilt
e5abc789a2 Prepare 5.2.0 release 2015-11-01 16:40:01 -05:00
Jay Berkenbilt
b8bdef0ad1 Implement deterministic ID
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.
2015-10-31 18:56:42 -04:00
Jay Berkenbilt
5c9c5d537b Update TODO with some small enhancements
There have been a few enhancements requested that only affect the qpdf
command line tool and that should be relatively quick to implement.
Work out the details and acknowledge these publicly in the TODO file.
2015-05-24 16:26:05 -04:00
Jay Berkenbilt
a11549a566 Detect loops in /Pages structure
Pushing inherited objects to pages and getting all pages were both
prone to stack overflow infinite loops if there were loops in the
Pages dictionary. There is a general weakness in the code in that any
part of the code that traverses the Pages structure would be prone to
this and would have to implement its own loop detection. A more robust
fix may provide some general method for handling the Pages structure,
but it's probably not worth doing.

Note: addition of *Internal2 private functions was done rather than
changing signatures of existing methods to avoid breaking
compatibility.
2015-02-21 19:47:11 -05:00
Jay Berkenbilt
b8b273d14d TODO note on pluggable filters 2013-12-15 10:08:51 -05:00
Jay Berkenbilt
b802ca47e9 Comments about incremental update support
Also remove some trivial, non-functional code.
2013-12-14 15:17:36 -05:00
Jay Berkenbilt
cdff7a4966 Retarget 5.1.0 changes to 5.2.0 2013-12-14 15:17:36 -05:00
Jay Berkenbilt
4229457068 Security: use a secure random number generator
If not available, give an error.  The user may also configure qpdf to
use an insecure random number generator.
2013-10-18 10:45:12 -04:00
Jay Berkenbilt
b9fe85be28 Note about extra hash_V5 calls 2013-07-20 10:18:01 -04:00
Jay Berkenbilt
cee2592ed1 Change API/ABI and withdraw 4.2.0
4.2.0 was binary incompatible in spite of there being no deletions or
changes to any public methods.  As such, we have to bump the ABI and
are fixing some API breakage while we're at it.

Previous 4.3.0 target is now 5.1.0.
2013-07-10 11:30:13 -04:00
Jay Berkenbilt
f31e526d67 Prepare 4.2.0 release 2013-07-07 19:43:16 -04:00
Jay Berkenbilt
b84f57e56d Ignore broken DecodeParms for stream with no filters 2013-07-07 19:43:16 -04:00
Jay Berkenbilt
a2696ac271 Adjust to-do list 2013-07-07 19:43:16 -04:00
Jay Berkenbilt
a1d5a3e916 Retarget some items for 4.2.0 and 4.3.0
Bug fixes for 4.2.0 force additional interfaces, so move most of the
4.2.0 items to 4.3.0.
2013-06-14 21:36:22 -04:00
Jay Berkenbilt
c660f74334 User suggestions from github issues 10 and 11 2013-06-02 16:10:53 -04:00
Jay Berkenbilt
f02c5f5e12 Final preparation for 4.1.0 release 2013-04-14 15:03:51 -04:00
Jay Berkenbilt
eb6f066296 Update 4.2.0 target 2013-04-04 14:13:51 -04:00
Jay Berkenbilt
e8ddac8950 Document casting policy 2013-03-25 14:37:25 -04:00
Jay Berkenbilt
1ec1b12864 Improve idea for corrupted stream handling 2013-03-17 13:16:14 -04:00
Jay Berkenbilt
77a35e0870 Retarget some items for 4.2.0 2013-03-16 22:04:36 -04:00
Jay Berkenbilt
49c7681c58 Windows install: check DLL type
When copying dlls, make sure to only consider DLLs whose type matches
the type of what is loading them.
2013-03-11 14:10:37 -04:00
Jay Berkenbilt
f13558dddb More 4.1.0 TODO items 2013-03-10 20:32:52 -04:00
Jay Berkenbilt
c380fb00d8 Update TODO for 4.1.0
Prepare update for TODO for publication since there is useful
information there for people looking at the repository.
2013-03-07 11:33:09 -05:00
Jay Berkenbilt
1d88955fa6 Added new QPDFObjectHandle types Keyword and InlineImage
These object types are to facilitate content stream parsing.
2013-01-20 15:35:39 -05:00
Jay Berkenbilt
9b3a896aea Remove previously finished item from TODO 2012-12-31 10:32:32 -05:00
Jay Berkenbilt
06c5bac96c Clarify TODO note about crypt filters 2012-12-31 10:32:32 -05:00
Jay Berkenbilt
e57c25814e Support for encryption with /V=5 and /R=5 and /R=6
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-31 10:32:32 -05:00
Jay Berkenbilt
93ac1695a4 Support files with only attachments encrypted
Test cases added in a future commit since they depend on /R=6 support.
2012-12-31 10:32:32 -05:00
Jay Berkenbilt
ef23bba4cd Add note in TODO about random number seeding 2012-12-31 10:32:32 -05:00
Jay Berkenbilt
04c203ae06 Eliminate flattenScalarReferences 2012-12-31 05:36:48 -05:00
Jay Berkenbilt
7f84239cad Find PDF header anywhere in the first 1024 bytes 2012-12-25 14:43:37 -05:00
Jay Berkenbilt
bcfc9847be Note about embedded resources 2012-12-25 13:30:17 -05:00
Jay Berkenbilt
a0a3de7775 Leading carriage return enhancement request 2012-12-25 13:30:15 -05:00
Jay Berkenbilt
f256670eba Ignore objects with offset 0 2012-11-20 13:57:37 -05:00
Jay Berkenbilt
8d2b29ef98 Fix segmentation fault with use of QPDFWriter::setOutputMemory 2012-09-06 14:39:06 -04:00
Jay Berkenbilt
b51a5b2c09 Note to fix setOutputMemory bug 2012-09-03 16:51:03 -04:00
Jay Berkenbilt
59432b5c70 Prepare 3.0.1 release 2012-08-11 13:41:18 -04:00
Jay Berkenbilt
3c4110184c Add specially crafted test cases for EOF error
This replaces a PDF from the wild that I didn't want to include in the
test suite but used to verify the original fix.
2012-08-11 12:36:57 -04:00
Jay Berkenbilt
6c820d6cc8 TODO update: bug report, suggestion from issue 2012-08-10 21:20:05 -04:00
Jay Berkenbilt
9d477959c9 Reminder to mention pkg-config files in release notes 2012-08-09 21:22:38 -04:00
Jay Berkenbilt
32051283b9 Fix spelling errors 2012-07-29 14:44:12 -04:00
Jay Berkenbilt
2280c4f6d1 Update documentation and version numbers
3.0.rc1
2012-07-28 22:03:36 -04:00
Jay Berkenbilt
5a02471bb1 Command-line page merging and splitting
Implement --pages ... -- option for qpdf.  Update TODO with remaining
things to document.
2012-07-21 20:33:33 -04:00
Jay Berkenbilt
a50cfefd29 Never mind about large file test change 2012-07-21 11:57:57 -04:00
Jay Berkenbilt
ca97f146f7 Add note about large file test 2012-07-21 09:36:12 -04:00
Jay Berkenbilt
6bbea4baa0 Implement QPDFObjectHandle::parse
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-21 09:06:10 -04:00
Jay Berkenbilt
8ea2f8441d TODO notes 2012-07-15 21:27:08 -04:00
Jay Berkenbilt
a101533e0a Add command line option to copy encryption from other file
Add --copy-encryption and --encryption-file-password options to qpdf.
Also strengthen test suite for copying encryption.  The strengthened
test suite would have caught the failure to preserve AES and the
failure to update the file version, which was invalidating the
encrypted data.
2012-07-15 21:15:24 -04:00
Jay Berkenbilt
0575d77d77 Add public QPDFWriter::copyEncryptionParameters
Method to copy encryption parameters from another file.  Adapted from
existing code to copy encryption parameters from the original file.
2012-07-14 09:14:41 -04:00
Jay Berkenbilt
e7b8f297ba Support copying objects from another QPDF object
This includes QPDF::copyForeignObject and supporting foreign objects
as arguments to addPage*.
2012-07-11 15:54:33 -04:00
Jay Berkenbilt
b20e37a2c5 Update TODO 2012-07-08 16:01:27 -04:00
Jay Berkenbilt
e2dedde4bd Don't require stream data provider to know length in advance
Breaking API change: length parameter has disappeared from the
StreamDataProvider version of QPDFObjectHandle::replaceStreamData
since it is no longer necessary to compute it in advance.  This
breaking change is justified by the fact that removing the length
parameter provides the caller an opportunity to simplify the calling
code.
2012-07-07 17:33:45 -04:00
Jay Berkenbilt
a167ce8120 Update ChangeLog and TODO 2012-06-27 10:20:50 -04:00
Jay Berkenbilt
5b4aba20a2 TODO 2012-06-27 06:48:06 -04:00
Jay Berkenbilt
47fe285567 Update TODO 2012-06-24 15:56:59 -04:00
Jay Berkenbilt
8318d81ada Fix and test support for files >= 4 GB 2012-06-24 15:56:50 -04:00