From 023a00271974200355eba3743ccc9af2f8b01c4d Mon Sep 17 00:00:00 2001 From: m-holger Date: Wed, 27 Aug 2025 19:11:39 +0100 Subject: [PATCH] Enhance `QPDFOutlineDocumentHelper` by adding stricter value validation and invoking `validate()` for `names_dest` initialization --- libqpdf/QPDFOutlineDocumentHelper.cc | 9 ++++++++- manual/release-notes.rst | 10 ++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/libqpdf/QPDFOutlineDocumentHelper.cc b/libqpdf/QPDFOutlineDocumentHelper.cc index e996789..f1774ff 100644 --- a/libqpdf/QPDFOutlineDocumentHelper.cc +++ b/libqpdf/QPDFOutlineDocumentHelper.cc @@ -94,7 +94,14 @@ QPDFOutlineDocumentHelper::resolveNamedDest(QPDFObjectHandle name) if (!m->names_dest) { auto dests = qpdf.getRoot().getKey("/Names").getKeyIfDict("/Dests"); if (dests.isDictionary()) { - m->names_dest = std::make_unique(dests, qpdf); + m->names_dest = std::make_unique( + dests, + qpdf, + [](QPDFObjectHandle const& o) -> bool { + return o.isArray() || o.isDictionary(); + }, + true); + m->names_dest->validate(); } } if (m->names_dest) { diff --git a/manual/release-notes.rst b/manual/release-notes.rst index b687099..82c43be 100644 --- a/manual/release-notes.rst +++ b/manual/release-notes.rst @@ -23,6 +23,16 @@ more detail. not work on some older Linux distributions. If you need support for an older distribution, please use version 12.2.0 or below. + - Library Enhancements + + - Add ``QPDFNameTreeObjectHelper`` and ``QPDFNumberTreeObjectHelper`` + constructor overloads that allow a function to ne passed to + validate the values in the tree. + + - Add new ``QPDFNameTreeObjectHelper`` and ``QPDFNumberTreeObjectHelper`` + ``validate`` method to validate and optionally repair the name/number + tree. + - CLI Enhancements - Disallow option :qpdf:ref:`--deterministic-id` to be used together -- libgit2 0.21.4