From patchwork Mon Feb 8 19:57:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adolf Belka X-Patchwork-Id: 3879 Return-Path: Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature RSA-PSS (4096 bits)) (Client CN "mail01.haj.ipfire.org", Issuer "R3" (verified OK)) by web04.haj.ipfire.org (Postfix) with ESMTPS id 4DZGyL3Mj6z3wps for ; Mon, 8 Feb 2021 19:57:14 +0000 (UTC) Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [172.28.1.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature ECDSA (P-384)) (Client CN "mail02.haj.ipfire.org", Issuer "R3" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4DZGyL0SCKzpd; Mon, 8 Feb 2021 19:57:14 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4DZGyK6nMGz2xq4; Mon, 8 Feb 2021 19:57:13 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature RSA-PSS (4096 bits)) (Client CN "mail01.haj.ipfire.org", Issuer "R3" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4DZGyJ6FShz2xfh for ; Mon, 8 Feb 2021 19:57:12 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 4DZGyJ22DJzg7; Mon, 8 Feb 2021 19:57:12 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1612814232; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=knsCWkM7kKGX9buefWziylVRO7CUW6umD2fyQUQmPkc=; b=AfpEmDBonwXZSgJB3vtnhYytVssR27pZutjM33AEeez26im523divo3I8IDJ/rqumZlLit ZOnRKq9ivQdWpbDQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1612814232; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=knsCWkM7kKGX9buefWziylVRO7CUW6umD2fyQUQmPkc=; b=uyQklWM6y+C0kJFn8gWDahIriM9My2I0CEJpzGGVq3JLDkWapp4+pCbnEtgZ76fvPuGi5u MRTZJhHiA17pk3zIUgfrAIN6cgXgQQFUOpdMpnR4qsyizJdHT+eyo3sn7Lqs49kP4DvsY4 ayVqROpE6eKQwagSo6KeHn6wGjrTHUcWIBkANN/3RGWiyIvwXHMEmprZykyAsRQqJn+py0 vqnGFVGBUVoivJ7Jc0rhuy32dP9Mmol6wVr1XQyuzy3gCijvw1OP0uRTYyHg9AtlDLZEqa /lqPhQT8k38DbNh5EPBY3kgirC9Au+YSHbblt4FAhXTfWAaXXwDsvj8d0MPFoA== From: Adolf Belka To: development@lists.ipfire.org Subject: [PATCH] qpdf: Update to 10.1.0 Date: Mon, 8 Feb 2021 20:57:10 +0100 Message-Id: <20210208195710.3201246-1-adolf.belka@ipfire.org> MIME-Version: 1.0 X-BeenThere: development@lists.ipfire.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: IPFire development talk List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: development-bounces@lists.ipfire.org Sender: "Development" - Update qpdf from 10.0.1 to 10.1.0 - Update rootfile - Changelog 2021-01-05 Jay Berkenbilt * 10.1.0: release 2021-01-04 Jay Berkenbilt * When qpdf CLI extracts pages, it now only attempts to remove unreferenced resources from the pages that it is keeping. This change dramatically reduces the time it takes to extract a small number of pages from a large, complex file. * Move getNext()->write() calls in some pipelines to ensure that state gates properly reset even if the next pipeline's write throws an exception (fuzz issue 28262). 2021-01-03 Jay Berkenbilt * Don't include -o nospace with zsh completion setup so file completion works normally. Fixes #473. 2021-01-02 Jay Berkenbilt * Make QPDFPageObjectHelper methods pipeContents, parseContents, and addContentTokenFilter work with form XObjects. * Rename some QPDFPageObjectHelper methods and make them support form XObjects as well as pages. The old names will be preserved from compatibility. - pipePageContents -> pipeContents - parsePageContents -> parseContents * Add QPDFObjectHandle::parseAsContents to apply ParserCallbacks to a form XObject. * QPDFPageObjectHelper::externalizeInlineImages can be called with form XObjects as well as pages. * Bug fix: QPDFPageObjectHelper::externalizeInlineImages was not descending into form XObjects on a page. It now does this by default. In the extremely unlikely event that anyone was actually depending on the old behavior, it is available by passing shallow=true to the externalizeInlineImages call. * Bug fix: QPDFObjectHandle::filterPageContents was broken for pages with an array of content streams. This caused externalize-inline-images to also be broken for this case. 2021-01-01 Jay Berkenbilt * Add methods to QPDFPageObjectHelper: forEachXObject, forEachImage, forEachFormXObject to call a function on each XObject (or image or form XObject) in a page or form XObject, possibly recursing into nested form XObjects. * Add method QPDFPageObjectHelper::getFormXObjects to return a map of keys to form XObjects (non-recursively) from a page or form XObject. * Add method QPDFObjectHandle::isImage to test whether an object is an image. 2020-12-31 Jay Berkenbilt * QPDFPageObjectHelper::removeUnreferencedResources can now be called with a QPDFPageObjectHelper created from a form XObject. The method already recursed into form XObjects. * Rename some QPDFPageObjectHelper methods and make them support form XObjects as well as pages. The old names will be preserved from compatibility. - getPageImages -> getImages - filterPageContents -> filterContents * Add QPDFObjectHandle::isFormXObject to test whether an object is a form XObject. 2020-12-30 Jay Berkenbilt * Add QPDFPageObjectHelper::flattenRotation and --flatten-rotation option to the qpdf CLI. The flattenRotation method removes any /Rotate key from a page dictionary and implements the same rotation by modifying the page's contents such that the various page boxes are altered and the page renders identically. This can be used to work around buggy PDF applications that don't properly handle page rotation. The --flatten-rotation option to the qpdf CLI calls flattenRotation for every page. 2020-12-26 Jay Berkenbilt * Add QPDFObjectHandle::setFilterOnWrite, which can be used to tell QPDFWriter not to filter a stream on output even if it can. You can use this to prevent QPDFWriter from touching a stream (either uncompressing or compressing) that you have optimized or otherwise ensured looks exactly the way you want it, even if decode level or stream compression would otherwise cause QPDFWriter to modify the stream. * Add ostream << for QPDFObjGen. (Don't ask why it took 7.5 years for me to decide to do this.) 2020-12-25 Jay Berkenbilt * Refactor write code to eliminate an extra full traversal of objects in the file and to remove assumptions that preclude stream references from appearing in /DecodeParms of filterable streams. This results in an approximately 8% performance reduction in write times. 2020-12-23 Jay Berkenbilt * Allow library users to provide their own decoders for stream filters by deriving classes from QPDFStreamFilter and registering them using QPDF::registerStreamFilter. Registered stream filters provide code to validate and interpret /DecodeParms for a specific /Filter and also to provide a pipeline that will decode. Note that it is possible to encode to a filter type that is not supported even without this feature. See examples/pdf-custom-filter.cc for an example of using custom stream filters. 2020-12-22 Jay Berkenbilt * Add QPDFObjectHandle::makeDirect(bool allow_streams) -- if allow_streams is true, preserve indirect references to streams rather than throwing an exception. This allows the object to be made as direct as possible while preserving stream references. 2020-12-20 Jay Berkenbilt * Add qpdf_register_progress_reporter method to C API, corresponding to QPDFWriter::registerProgressReporter. Fixes #487. 2020-11-28 Jay Berkenbilt * Add new functions to the C API for manipulating QPDFObjectHandles. The new functions allow creation and modification of objects, which brings a lot of additional power to the C API. See include/qpdf/qpdf-c.h for details and examples/pdf-c-objects.c for a simple example. 2020-11-21 Jay Berkenbilt * 10.0.4: release * Fix QIntC::range_check to handle negative numbers properly (fuzz issue 26994). 2020-11-11 Jay Berkenbilt * Treat a direct page object as a runtime error rather than a logic error since it is actually possible to create a file that has this (fuzz issue 27393). 2020-11-09 Jay Berkenbilt * Handle "." appearing in --pages not preceded by a numeric range as a special case in command-line parsing code. 2020-11-04 Jay Berkenbilt * Ignore the value of the offset/generation field in an xref entry for a deleted object. Also attempt file recovery on lower-level exceptions thrown while reading the xref table. Fixes #482. 2020-10-31 Jay Berkenbilt * 10.0.3: release * Don't enter extension initialization in QPDFWriter on a direct object. Fixes stack overflow in pathological case of /Root being a direct object (fuzz issue 26761). * My previous fix to #449 (handling foreign streams with indirect objects in /Filter and/or /DecodeParms) was incorrect and caused other problems. There is a now a correct fix to the original problem. Fixes #478. 2020-10-27 Jay Berkenbilt * 10.0.2: release 2020-10-25 Jay Berkenbilt * When signing distribution files, generate sha256 checksums instead of md5, sha1, and sha512. sha256 seems to be more widely used, and there's no reason to use md5 or sha1 anymore. * Official Windows releases are now built using the openssl crypto provider. The native provider is still available for selection at runtime using the QPDF_CRYPTO_PROVIDER environment variable. * Bug fix: --no-warn was not suppressing some warnings that might be generated by --split-pages. 2020-10-23 Jay Berkenbilt * Bug fix: when concatenating content streams, insert a newline if needed to prevent the last token from the old stream from being merged with the first token of the new stream. Qpdf was mistakenly concatenating the streams without regard to the specification that content streams are to be broken on token boundaries. Fixes #444. * fix-qdf: handle empty streams better with ignore newline by treating them as empty even though, technically, a blank line would be required inside the Stream. This just makes it easier to add place-holder empty streams while editing qdf files by hand. 2020-10-22 Jay Berkenbilt * Fix memory leak that could occur if objects in object streams were resolved more than once and the objects within the object streams contained circular references. This leak could be triggered when qpdf was run with --object-streams=generate on files that already had object streams containing circular references (fuzz issue 23642). * Add QIntC::range_check for checking to see whether adding two numbers together will cause an overflow. * Fix loop detection problem when traversing page thumbnails during optimization (fuzz issue 23172). 2020-10-21 Jay Berkenbilt * Bug fix: properly handle copying foreign streams that have indirect /Filter or /DecodeParms keys when stream data has been replaced. The circumstances leading to this bug are very unusual but would cause qpdf to either generate an internal error or some other kind of warning situation if it would occur. Fixes #449. * Qpdf's build and CI has been migrated from Azure Pipelines (Azure DevOps) to GitHub Actions. * Remove some fuzz files that triggered Mal/PDFEx-H with some virus scanners. There's plenty of coverage in the fuzz corpus without these files, and it's a nuisance to have virus checkers remove them. Fixes #460. * Ensure that numeric conversion is not affected by the user's global locale setting. Fixes #459. * Add qpdf--linux-x86_64.zip to the list of built distributions. This is a simple zip file that contains just the qpdf executables and the dependent shared libraries that would not ordinarily be present on a base system. This minimal binary distribution works as is when used as a Lambda layer in AWS and could be suitable for inclusion in a docker image or other standalone Linux/x86_64 environment where you want minimal support for running the qpdf executable. Fixes #352. 2020-10-20 Jay Berkenbilt * Add --warning-exit-0 option to the qpdf command line. When specified, qpdf will exit with a status of 0 rather than 3 when there are warnings without errors. Combine with --no-warn to completely ignore warnings. * Bug fix: fix further cases in which errors were written to stdout. Fixes #438. * Build option: add --disable-rpath option to ./configure, which disables passing -rpath to the linker when building shared libraries with libtool. Fixes #422. 2020-10-16 Jay Berkenbilt * Accept pull request that improves how the Windows native crypto provider is obtained. * Accept pull request that improves performance in processing files in memory. * Accept pull requests that improve openssl configuration and error reporting. * Build using GitHub Actions. The intention is that this will replace Azure Pipelines as the official CI for qpdf for the next release. 2020-10-15 Jay Berkenbilt * Make many minor improvements to the build process and code health, including fixing a lgtm warning and compiler warnings from newer version of gcc and MSVC toolchains. Add several cosmetic improvements to build output in CI. * Added LL_FMT to config.h.in. This is populated automatically by autoconf, but if build with your own build system, you may need to define it as whatever the format string needed by printf for long long is. Usually this is "%lld", but it can be "%I64d" for some older Windows-based compilers. 2020-04-29 Jay Berkenbilt * Bug fix: qpdf --check was writing errors and warnings reported by checkLinearization to stdout instead of stderr. Fixes #438. Signed-off-by: Adolf Belka --- config/rootfiles/common/qpdf | 4 ++-- lfs/qpdf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/rootfiles/common/qpdf b/config/rootfiles/common/qpdf index 9f6d18ee6..581ba243f 100644 --- a/config/rootfiles/common/qpdf +++ b/config/rootfiles/common/qpdf @@ -41,6 +41,7 @@ usr/bin/qpdf #usr/include/qpdf/QPDFPageDocumentHelper.hh #usr/include/qpdf/QPDFPageLabelDocumentHelper.hh #usr/include/qpdf/QPDFPageObjectHelper.hh +#usr/include/qpdf/QPDFStreamFilter.hh #usr/include/qpdf/QPDFSystemError.hh #usr/include/qpdf/QPDFTokenizer.hh #usr/include/qpdf/QPDFWriter.hh @@ -50,11 +51,10 @@ usr/bin/qpdf #usr/include/qpdf/RandomDataProvider.hh #usr/include/qpdf/Types.h #usr/include/qpdf/qpdf-c.h -#usr/lib/libqpdf.a #usr/lib/libqpdf.la #usr/lib/libqpdf.so usr/lib/libqpdf.so.28 -usr/lib/libqpdf.so.28.0.1 +usr/lib/libqpdf.so.28.1.0 #usr/lib/pkgconfig/libqpdf.pc #usr/share/doc/qpdf #usr/share/doc/qpdf/qpdf-manual.html diff --git a/lfs/qpdf b/lfs/qpdf index 600454bc3..af934c647 100644 --- a/lfs/qpdf +++ b/lfs/qpdf @@ -24,7 +24,7 @@ include Config -VER = 10.0.1 +VER = 10.1.0 THISAPP = qpdf-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = eb7fb7c6cd5d3036bf4f7a5e3f44d995 +$(DL_FILE)_MD5 = 6d72264ff68a9807418af4d7fc613e95 install : $(TARGET)