From dcf111a9bcc0dc7dcc96eb7884b48355c2d5eb1e Mon Sep 17 00:00:00 2001 From: m-holger Date: Wed, 18 Sep 2024 00:12:44 +0100 Subject: [PATCH] Apply fuzzer Pl_Flate memory limit only when inflating Fixes fuzz issue 71689. --- fuzz/CMakeLists.txt | 1 + fuzz/qpdf_extra/71689.fuzz | Bin 0 -> 205987 bytes fuzz/qpdf_fuzzer.cc | 7 ------- fuzz/qtest/fuzz.test | 2 +- libqpdf/Pl_Flate.cc | 4 ++-- 5 files changed, 4 insertions(+), 10 deletions(-) create mode 100644 fuzz/qpdf_extra/71689.fuzz diff --git a/fuzz/CMakeLists.txt b/fuzz/CMakeLists.txt index 89cfd81b..73d886c0 100644 --- a/fuzz/CMakeLists.txt +++ b/fuzz/CMakeLists.txt @@ -141,6 +141,7 @@ set(CORPUS_OTHER 70306a.fuzz 70306b.fuzz 71624.fuzz + 71689.fuzz ) set(CORPUS_DIR ${CMAKE_CURRENT_BINARY_DIR}/qpdf_corpus) diff --git a/fuzz/qpdf_extra/71689.fuzz b/fuzz/qpdf_extra/71689.fuzz new file mode 100644 index 0000000000000000000000000000000000000000..81911b9ceff67cfa24dca0f2ec8a3f44de24a0b7 GIT binary patch literal 205987 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 w->setQDFMode(true); doWrite(w); - - q = getQpdf(); - w = getWriter(q); - w->setStaticID(true); - w->setLinearization(true); - w->setR6EncryptionParameters("u", "o", true, true, true, true, true, true, qpdf_r3p_full, true); - doWrite(w); } void diff --git a/fuzz/qtest/fuzz.test b/fuzz/qtest/fuzz.test index eebc3c10..02dbc98a 100644 --- a/fuzz/qtest/fuzz.test +++ b/fuzz/qtest/fuzz.test @@ -11,7 +11,7 @@ my $td = new TestDriver('fuzz'); my $qpdf_corpus = $ENV{'QPDF_FUZZ_CORPUS'} || die "must set QPDF_FUZZ_CORPUS"; -my $n_qpdf_files = 78; # increment when adding new files +my $n_qpdf_files = 79; # increment when adding new files my @fuzzers = ( ['ascii85' => 1], diff --git a/libqpdf/Pl_Flate.cc b/libqpdf/Pl_Flate.cc index b9ad8a02..ad680492 100644 --- a/libqpdf/Pl_Flate.cc +++ b/libqpdf/Pl_Flate.cc @@ -181,7 +181,7 @@ Pl_Flate::handleData(unsigned char const* data, size_t len, int flush) } uLong ready = QIntC::to_ulong(m->out_bufsize - zstream.avail_out); if (ready > 0) { - if (memory_limit) { + if (memory_limit && m->action != a_deflate) { m->written += ready; if (m->written > memory_limit) { throw std::runtime_error("PL_Flate memory limit exceeded"); @@ -205,7 +205,7 @@ void Pl_Flate::finish() { if (m->written > memory_limit) { - return; + throw std::runtime_error("PL_Flate memory limit exceeded"); } try { if (m->outbuf.get()) {