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,7 +94,14 @@ QPDFOutlineDocumentHelper::resolveNamedDest(QPDFObjectHandle name)
94 if (!m->names_dest) { 94 if (!m->names_dest) {
95 auto dests = qpdf.getRoot().getKey("/Names").getKeyIfDict("/Dests"); 95 auto dests = qpdf.getRoot().getKey("/Names").getKeyIfDict("/Dests");
96 if (dests.isDictionary()) { 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 if (m->names_dest) { 107 if (m->names_dest) {
manual/release-notes.rst
@@ -23,6 +23,16 @@ more detail. @@ -23,6 +23,16 @@ more detail.
23 not work on some older Linux distributions. If you need support 23 not work on some older Linux distributions. If you need support
24 for an older distribution, please use version 12.2.0 or below. 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 - CLI Enhancements 36 - CLI Enhancements
27 37
28 - Disallow option :qpdf:ref:`--deterministic-id` to be used together 38 - Disallow option :qpdf:ref:`--deterministic-id` to be used together