Commit 14dba6a76b4e2a7d2ef27ba6b8f2b3dc25ddf898

Authored by m-holger
1 parent 6ccbc121

Add key and value validation in `NNTreeImpl` replacement logic to ensure validity before insertion.

fuzz/CMakeLists.txt
@@ -164,6 +164,7 @@ set(CORPUS_OTHER @@ -164,6 +164,7 @@ set(CORPUS_OTHER
164 4720043549327360.fuzz 164 4720043549327360.fuzz
165 5109284021272576.fuzz 165 5109284021272576.fuzz
166 5828408539152384.fuzz 166 5828408539152384.fuzz
  167 + 6310410941956096.fuzz
167 6489005569146880.fuzz 168 6489005569146880.fuzz
168 ) 169 )
169 170
fuzz/qpdf_extra/6310410941956096.fuzz 0 → 100644
No preview for this file type
fuzz/qtest/fuzz.test
@@ -11,7 +11,7 @@ my $td = new TestDriver('fuzz'); @@ -11,7 +11,7 @@ my $td = new TestDriver('fuzz');
11 11
12 my $qpdf_corpus = $ENV{'QPDF_FUZZ_CORPUS'} || die "must set QPDF_FUZZ_CORPUS"; 12 my $qpdf_corpus = $ENV{'QPDF_FUZZ_CORPUS'} || die "must set QPDF_FUZZ_CORPUS";
13 13
14 -my $n_qpdf_files = 102; # increment when adding new files 14 +my $n_qpdf_files = 103; # increment when adding new files
15 15
16 my @fuzzers = ( 16 my @fuzzers = (
17 ['ascii85' => 1], 17 ['ascii85' => 1],
libqpdf/NNTree.cc
@@ -666,7 +666,7 @@ NNTreeImpl::repair() @@ -666,7 +666,7 @@ NNTreeImpl::repair()
666 NNTreeImpl repl(qpdf, new_node, key_type, value_valid, false); 666 NNTreeImpl repl(qpdf, new_node, key_type, value_valid, false);
667 std::map<QPDFObjectHandle, QPDFObjectHandle, Cmp> items; 667 std::map<QPDFObjectHandle, QPDFObjectHandle, Cmp> items;
668 for (auto const& [key, value]: *this) { 668 for (auto const& [key, value]: *this) {
669 - if (key && value) { 669 + if (key && value && repl.keyValid(key) && repl.value_valid(value) ) {
670 items.insert_or_assign(key, value); 670 items.insert_or_assign(key, value);
671 } 671 }
672 } 672 }