Commit 023a00271974200355eba3743ccc9af2f8b01c4d
1 parent
dfb2718c
Enhance `QPDFOutlineDocumentHelper` by adding stricter value validation and invo…
…king `validate()` for `names_dest` initialization
Showing
2 changed files
with
18 additions
and
1 deletions
libqpdf/QPDFOutlineDocumentHelper.cc
| ... | ... | @@ -94,7 +94,14 @@ QPDFOutlineDocumentHelper::resolveNamedDest(QPDFObjectHandle name) |
| 94 | 94 | if (!m->names_dest) { |
| 95 | 95 | auto dests = qpdf.getRoot().getKey("/Names").getKeyIfDict("/Dests"); |
| 96 | 96 | if (dests.isDictionary()) { |
| 97 | - m->names_dest = std::make_unique<QPDFNameTreeObjectHelper>(dests, qpdf); | |
| 97 | + m->names_dest = std::make_unique<QPDFNameTreeObjectHelper>( | |
| 98 | + dests, | |
| 99 | + qpdf, | |
| 100 | + [](QPDFObjectHandle const& o) -> bool { | |
| 101 | + return o.isArray() || o.isDictionary(); | |
| 102 | + }, | |
| 103 | + true); | |
| 104 | + m->names_dest->validate(); | |
| 98 | 105 | } |
| 99 | 106 | } |
| 100 | 107 | if (m->names_dest) { | ... | ... |
manual/release-notes.rst
| ... | ... | @@ -23,6 +23,16 @@ more detail. |
| 23 | 23 | not work on some older Linux distributions. If you need support |
| 24 | 24 | for an older distribution, please use version 12.2.0 or below. |
| 25 | 25 | |
| 26 | + - Library Enhancements | |
| 27 | + | |
| 28 | + - Add ``QPDFNameTreeObjectHelper`` and ``QPDFNumberTreeObjectHelper`` | |
| 29 | + constructor overloads that allow a function to ne passed to | |
| 30 | + validate the values in the tree. | |
| 31 | + | |
| 32 | + - Add new ``QPDFNameTreeObjectHelper`` and ``QPDFNumberTreeObjectHelper`` | |
| 33 | + ``validate`` method to validate and optionally repair the name/number | |
| 34 | + tree. | |
| 35 | + | |
| 26 | 36 | - CLI Enhancements |
| 27 | 37 | |
| 28 | 38 | - Disallow option :qpdf:ref:`--deterministic-id` to be used together | ... | ... |