Commit 023a00271974200355eba3743ccc9af2f8b01c4d

Authored by m-holger
1 parent dfb2718c

Enhance `QPDFOutlineDocumentHelper` by adding stricter value validation and invo…

…king `validate()` for `names_dest` initialization
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
... ...