Jay Berkenbilt
b30deaeeab
Avoid merging adjacent tokens when concatenating contents ( fixes #444 )
2020-10-23 08:00:04 -04:00
Jay Berkenbilt
0dea276997
Fix fix-qdf for empty streams
2020-10-23 06:39:42 -04:00
Jay Berkenbilt
24196c08cb
Fix loop detection error (fuzz issue 23172)
2020-10-22 05:48:35 -04:00
Jay Berkenbilt
956c8f6432
Obscure bug fix copying foreign streams in special cases ( fixes #449 )
...
Specifically, if a stream had its stream data replaced and had
indirect /Filter or /DecodeParms, it would result in non-silent loss
of data and/or internal error.
2020-10-21 19:23:23 -04:00
Jay Berkenbilt
395efdf8d7
Turn off azure pipelines, completing migration to GitHub Actions
2020-10-21 16:42:51 -04:00
Jay Berkenbilt
98f6c00dad
Protect numeric conversion against user's locale ( fixes #459 )
2020-10-21 16:42:51 -04:00
Jay Berkenbilt
cfafac8d13
Create a minimal Linux binary distribution ( fixes #352 )
...
This is suitable for use as a Lambda layer in AWS, inclusion in a
docker container, or other places where a minimal binary distribution
is desired.
2020-10-21 10:07:34 -04:00
Jay Berkenbilt
758e3e38f5
Add option --warning-exit-0 to exit 0 instead of 3 with warnings
2020-10-20 18:02:39 -04:00
Jay Berkenbilt
56d96e2260
Add --disable-rpath to configure ( fixes #422 )
2020-10-20 17:18:20 -04:00
Jay Berkenbilt
bed165c9fc
Stop using InputSource::unreadCh
2020-10-18 07:43:05 -04:00
Jay Berkenbilt
a3677ffe91
TODO and ChangeLog updates from merged pull requests
2020-10-16 20:15:14 -04:00
Jay Berkenbilt
894d1c650c
Minor notes on GitHub Actions migration
2020-10-16 17:52:43 -04:00
Jay Berkenbilt
26514ab731
Write linearization errors to stderr ( fixes #438 )
2020-04-29 17:33:34 -04:00
Jay Berkenbilt
821a701851
Prepare 10.0.1 release
2020-04-09 11:48:26 -04:00
Jay Berkenbilt
4977a7efa5
Bug fix: getStreamData should on unfilterable stream ( fixes #425 )
2020-04-08 18:52:04 -04:00
Jay Berkenbilt
65ae8511a7
Improve pdf-invert-images example
2020-04-07 18:11:00 -04:00
Jay Berkenbilt
fbac472510
Correction to ChangeLog
2020-04-07 17:54:47 -04:00
Jay Berkenbilt
1e629c278a
Prepare 10.0.0 release
2020-04-06 11:30:15 -04:00
Jay Berkenbilt
ce6cee3570
Spell check
2020-04-06 11:23:02 -04:00
Jay Berkenbilt
77198d5310
Delegate random number generation to crypto provider ( fixes #418 )
2020-04-06 11:23:02 -04:00
Jay Berkenbilt
619d294e9d
Remove QUtil::srandom
2020-04-06 09:49:02 -04:00
Jay Berkenbilt
1360b530ec
Update ChangeLog and manual for openssl crypto provider
2020-04-06 09:24:12 -04:00
Jay Berkenbilt
3d0de5b924
Fixes to ChangeLog and manual for 10.0.0 changes
2020-04-06 09:02:58 -04:00
Jay Berkenbilt
893d38b87e
Allow propagation of errors and retry through StreamDataProvider
...
StreamDataProvider::provideStreamData now has a rich enough API for it
to effectively proxy to pipeStreamData.
2020-04-05 20:07:13 -04:00
Jay Berkenbilt
2118eecae7
Add objectinfo to json
2020-04-04 18:08:40 -04:00
Jay Berkenbilt
1e766dcda2
Add --remove-unreferenced-resources option
2020-04-04 13:19:49 -04:00
Jay Berkenbilt
b880273c43
Historical note in ChangeLog
...
I keep looking here to find out when I started requiring C++-11, and
now I will find the answer in the first place I look.
2020-04-04 13:19:49 -04:00
Jay Berkenbilt
2100b4ce15
Allow qpdf to be built on systems without wchar_t ( fixes #406 )
2020-04-03 21:39:44 -04:00
Jay Berkenbilt
4f3b89991b
placeFormXObject: allow control of shrink/expand ( fixes #409 )
2020-04-03 21:39:17 -04:00
Jay Berkenbilt
38afdcea7b
Add QPDFObjectHandle::unsafeShallowCopy
2020-04-03 12:16:24 -04:00
Jay Berkenbilt
89f19b7099
Performance: remove Members indirection for QPDFObjectHandle
2020-04-03 12:16:24 -04:00
Jay Berkenbilt
dac65a21fb
Look in form XObjects when removing unreferenced resources ( fixes #373 )
...
If a page contains a form XObject, also filter the form XObject and
remove its unreferenced resources.
2020-03-31 17:39:20 -04:00
Jay Berkenbilt
278710fbe8
Refactor QPDFPageObjectHelper::removeUnreferencedResources()
...
Refactor removeUnreferencedResources to prepare for filtering form
XObjects.
2020-03-31 17:39:20 -04:00
Jay Berkenbilt
b03e6bd65d
Use QPDF_EXECUTABLE as a hint for completion
2020-03-31 17:39:20 -04:00
Jay Berkenbilt
154b65f2e9
Add missing ChangeLog entry for :even and :odd
2020-02-24 12:27:46 -05:00
Jay Berkenbilt
ea58680eb0
Mention appearances in pdf-set-form-values example
2020-02-22 12:10:13 -05:00
Jay Berkenbilt
bb3137296d
Handle root /Pages pointing to other than page tree root ( fixes #398 )
2020-02-22 11:10:31 -05:00
Jay Berkenbilt
52a2e95dd5
Prepare 9.1.1 release
2020-01-26 18:49:04 -05:00
Jay Berkenbilt
57c01ef81f
In qdf mode, don't write extra XRef streams ( fixes #386 )
...
fix-qdf assumes there is exactly one XRef stream and that it is at the
end of the file.
2020-01-26 16:50:57 -05:00
Jay Berkenbilt
bbc2f8ffae
Bug fix: handle ColorSpace lookup for inline images ( fixes #392 )
...
If the value of /CS in the inline image dictionary was is key in the
page's /Resource -> /ColorSpace dictionary, properly resolve it by
referencing the proper colorspace, and not just the name, in the
external image dictionary.
2020-01-26 15:29:10 -05:00
Jay Berkenbilt
12777a04ca
Add encrypt key to json
2020-01-26 14:44:03 -05:00
Jay Berkenbilt
731c4f711b
Add --is-encrypted and --requires-password ( fixes #390 )
...
Allow exit status-based checking of whether a file is encrypted or
requires a password without necessarily supplying the correct
password. Useful for scripting.
2020-01-26 11:26:53 -05:00
Cloudmersive
a8b6ff5763
Fix for Windows unable to acquire crypt context with new keyset ( fixes #387 )
...
Fix is based on guidance
https://support.microsoft.com/en-us/help/238187/cryptacquirecontext-use-and-troubleshooting
and is the proper fix for #285/#286
2020-01-14 18:45:54 -05:00
Jay Berkenbilt
388990f7bc
Rewrite fix-qdf in C++
2020-01-14 11:53:19 -05:00
Jay Berkenbilt
a44b5a34a0
Pull wmain -> main code from qpdf.cc into QUtil.cc
2020-01-14 11:40:51 -05:00
Jay Berkenbilt
211a7f57be
QUtil::read_lines_from_file: optional EOL preservation
2020-01-13 11:26:18 -05:00
Jay Berkenbilt
9b0c6022d7
Prepare 9.1.0 release
2019-11-16 22:29:54 -05:00
Jay Berkenbilt
0e94aa6919
Fix up documentation around Windows wildcard fix
2019-11-10 20:19:38 -05:00
Jay Berkenbilt
5e6dfc938e
Prepare 9.1.rc1 release
2019-11-09 22:00:53 -05:00
Jay Berkenbilt
021d71454a
Spell check
2019-11-09 19:03:56 -05:00
Jay Berkenbilt
07da0039d3
Link with setargv or wsetargv with MSVC ( fixes #224 )
...
For wildcard expansion to work properly with the msvc binary, it is
necessary to link with setargv.obj or wsetargv.obj, depending on
whether wmain is in use.
2019-11-09 18:50:42 -05:00
Jay Berkenbilt
5508f74603
Allow /P in encryption dictionary to be positive ( fixes #382 )
...
Even though this is disallowed by the spec, files like this have been
encountered in the wild.
2019-11-09 12:33:15 -05:00
Jay Berkenbilt
1ee45458fc
Update docs for crypto providers
2019-11-09 09:53:42 -05:00
Jay Berkenbilt
9b76ec154d
Add ChangeLog and documentation for signature dict enhancements
2019-10-22 16:44:27 -04:00
Jay Berkenbilt
3094955dee
Prepare 9.0.2 release
2019-10-12 19:37:40 -04:00
Jay Berkenbilt
e188d0fffa
Make --replace-input work with / in path ( fixes #365 )
2019-10-12 19:27:50 -04:00
Jay Berkenbilt
4ea940b03c
Prepare 9.0.1 release
2019-09-20 07:38:18 -04:00
Jay Berkenbilt
db2e095a42
Update release notes for upcoming 9.0.1 release
2019-09-19 21:25:34 -04:00
Jay Berkenbilt
685250d7d6
Correct reversed Rectangle coordinates ( fixes #363 )
2019-09-19 21:25:34 -04:00
Jay Berkenbilt
8b1e307741
Warn for duplicated dictionary keys ( fixes #345 )
2019-09-19 20:22:34 -04:00
Jay Berkenbilt
6d81f01476
Don't assume char is signed in int conversion tests ( fixes #361 )
2019-09-17 12:18:09 -04:00
Jay Berkenbilt
5462dfce31
Prepare 9.0.0 release
2019-08-31 20:07:36 -04:00
Jay Berkenbilt
babd12c9b2
Add methods QPDF::anyWarnings and QPDF::closeInputSource
2019-08-31 15:51:20 -04:00
Jay Berkenbilt
4fa7b1eb60
Add remove_file and rename_file to QUtil
2019-08-31 15:51:04 -04:00
Jay Berkenbilt
0787ec9620
spell check
2019-08-31 08:43:18 -04:00
Jay Berkenbilt
5da146c8b5
Track separately whether password was user/owner ( fixes #159 )
2019-08-24 11:01:19 -04:00
Jay Berkenbilt
2794bfb1a6
Add flags to control zlib compression level ( fixes #113 )
2019-08-23 20:34:21 -04:00
Jay Berkenbilt
dac0598b94
Add ability to set zlib compression level globally
2019-08-23 20:34:21 -04:00
Jay Berkenbilt
3f1ab64066
Pass offset and length to ParserCallbacks::handleObject
2019-08-22 22:54:29 -04:00
Jay Berkenbilt
4b2e72c4cd
Test for direct, rather than resolved nulls in parser
...
Just because we know an indirect reference is null, doesn't mean we
shouldn't keep it indirect.
2019-08-22 17:55:16 -04:00
Jay Berkenbilt
3f3dbe22ea
Remove array null flattening
...
For some reason, qpdf from the beginning was replacing indirect
references to null with literal null in arrays even after removing the
old behavior of flattening scalar references. This seems like a bad
idea.
2019-08-22 17:55:16 -04:00
Jay Berkenbilt
ae5bd7102d
Accept extraneous space before xref ( fixes #341 )
2019-08-19 22:24:53 -04:00
Jay Berkenbilt
8a9086a689
Accept extraneous space after stream keyword ( fixes #329 )
2019-08-19 21:43:44 -04:00
Jay Berkenbilt
42d396f1dd
Handle invalid name tokens symmetrically for PDF < 1.2 ( fixes #332 )
2019-08-19 19:48:27 -04:00
Jay Berkenbilt
d9dd99eca3
Attempt to repair /Type key in pages nodes ( fixes #349 )
2019-08-18 18:54:37 -04:00
Jay Berkenbilt
89dacd8eba
Array optimization fixes performance issues ( fixes #305 , #311 )
2019-08-18 09:00:55 -04:00
Thorsten Schöning
8f06da7534
Change list to vector for outline helpers ( fixes #297 )
...
This change works around STL problems with Embarcadero C++ Builder
version 10.2, but std::vector is more common than std::list in qpdf,
and this is a relatively new API, so an API change is tolerable.
Thanks to Thorsten Schöning <6223655+ams-tschoening@users.noreply.github.com>
for the fix.
2019-07-03 20:08:47 -04:00
Jay Berkenbilt
c5ed1b8075
Handle invalid encryption Length ( fixes #333 )
2019-06-22 20:57:33 -04:00
Jay Berkenbilt
551dfbf697
Allow set*EncryptionParameters before filename iset ( fixes #336 )
2019-06-22 20:57:33 -04:00
Jay Berkenbilt
ed62be888c
Fix --completion-* args to work from AppImage ( fixes #285 )
2019-06-22 17:12:01 -04:00
Jay Berkenbilt
7bd38a3eb3
Provide error message in Windows crypto code ( fixes #286 )
...
Thanks to github user zdenop for supplying some additional
error-handling code.
2019-06-22 17:12:01 -04:00
Jay Berkenbilt
6c39aa8763
In shippable code, favor smart pointers ( fixes #235 )
...
Use PointerHolder in several places where manually memory allocation
and deallocation were being used. This helps to protect against memory
leaks when exceptions are thrown in surprising places.
2019-06-22 16:57:52 -04:00
Jay Berkenbilt
1240047528
Try to use pkg-config to find external dependencies ( fixes #324 )
2019-06-22 16:57:52 -04:00
Jay Berkenbilt
f2ef161261
Override umask on install ( fixes #326 )
2019-06-22 16:57:52 -04:00
Jay Berkenbilt
85a3f95a89
qpdf: exit 3 for linearization warnings without errors ( fixes #50 )
2019-06-22 16:57:51 -04:00
Jay Berkenbilt
a5814d9302
ChangeLog: fix errors in previous entries
2019-06-22 16:57:51 -04:00
Jay Berkenbilt
1bde5c68a3
Add QUtil::read_file_into_memory
...
This code was essentially duplicated between test_driver and
standalone_fuzz_target_runner.
2019-06-22 10:14:25 -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
cc2e8853b5
Enable int warnings by default
...
Now that there aren't any more...
2019-06-21 13:17:21 -04:00
Jay Berkenbilt
d71f05ca07
Fix sign and conversion warnings (major)
...
This makes all integer type conversions that have potential data loss
explicit with calls that do range checks and raise an exception. After
this commit, qpdf builds with no warnings when -Wsign-conversion
-Wconversion is used with gcc or clang or when -W3 -Wd4800 is used
with MSVC. This significantly reduces the likelihood of potential
crashes from bogus integer values.
There are some parts of the code that take int when they should take
size_t or an offset. Such places would make qpdf not support files
with more than 2^31 of something that usually wouldn't be so large. In
the event that such a file shows up and is valid, at least qpdf would
raise an error in the right spot so the issue could be legitimately
addressed rather than failing in some weird way because of a silent
overflow condition.
2019-06-21 13:17:21 -04:00
Jay Berkenbilt
f40ffc9d63
Pl_Flate: constructor's out_bufsize is now unsigned int
...
This is the type we need for the underlying zlib implementation.
2019-06-21 13:17:21 -04:00
Jay Berkenbilt
3608afd5c5
Add new integer accessors to QPDFObjectHandle
2019-06-21 13:17:21 -04:00
Jay Berkenbilt
42306e2ff8
QUtil: add unsigned int/string functions
2019-06-21 13:17:21 -04:00
Jay Berkenbilt
a66828caff
New safe type converters in QIntC
2019-06-21 13:17:21 -04:00
Jay Berkenbilt
616ae15595
Remove qpdf_read_memory_fuzzer
2019-06-18 08:43:55 -04:00
Jay Berkenbilt
127859a6d3
Run tests with sanitizers in CI
2019-06-15 17:24:24 -04:00
Jay Berkenbilt
bcfa407912
As a test suite, run stand-alone fuzzer on seed corpus
...
Temporarily skip fuzz tests on Windows. There are Windows-specific
failures to address later.
2019-06-15 17:24:24 -04:00