Commit 14dba6a76b4e2a7d2ef27ba6b8f2b3dc25ddf898
1 parent
6ccbc121
Add key and value validation in `NNTreeImpl` replacement logic to ensure validity before insertion.
Showing
4 changed files
with
3 additions
and
2 deletions
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 | } |