Commit 42c511198b34b247cb43f0a26b3a518c6e060216
1 parent
9081ac69
Suppress excessive warnings while fuzzing
Add extra fuzz test case and amend memory limit for Pl_DCT.
Showing
6 changed files
with
13 additions
and
5 deletions
fuzz/CMakeLists.txt
fuzz/qpdf_extra/69977.fuzz
0 → 100644
No preview for this file type
fuzz/qpdf_fuzzer.cc
| ... | ... | @@ -173,11 +173,11 @@ FuzzHelper::doChecks() |
| 173 | 173 | { |
| 174 | 174 | // Get as much coverage as possible in parts of the library that |
| 175 | 175 | // might benefit from fuzzing. |
| 176 | - std::cout << "starting testWrite\n"; | |
| 176 | + std::cerr << "\ninfo: starting testWrite\n"; | |
| 177 | 177 | testWrite(); |
| 178 | - std::cout << "\nstarting testPages\n\n"; | |
| 178 | + std::cerr << "\ninfo: starting testPages\n"; | |
| 179 | 179 | testPages(); |
| 180 | - std::cout << "\nstarting testOutlines\n\n"; | |
| 180 | + std::cerr << "\ninfo: starting testOutlines\n"; | |
| 181 | 181 | testOutlines(); |
| 182 | 182 | } |
| 183 | 183 | ... | ... |
fuzz/qtest/fuzz.test
libqpdf/Pl_DCT.cc
| ... | ... | @@ -320,7 +320,7 @@ Pl_DCT::decompress(void* cinfo_p, Buffer* b) |
| 320 | 320 | cinfo->mem->max_memory_to_use = 1'000'000'000; |
| 321 | 321 | // For some corrupt files the memory used internally by libjpeg stays within the above limits |
| 322 | 322 | // even though the size written to the next pipeline is significantly larger. |
| 323 | - m->corrupt_data_limit = 100'000'000; | |
| 323 | + m->corrupt_data_limit = 10'000'000; | |
| 324 | 324 | #endif |
| 325 | 325 | jpeg_buffer_src(cinfo, b); |
| 326 | 326 | ... | ... |
libqpdf/QPDF.cc
| ... | ... | @@ -494,6 +494,13 @@ QPDF::warn(QPDFExc const& e) |
| 494 | 494 | { |
| 495 | 495 | m->warnings.push_back(e); |
| 496 | 496 | if (!m->suppress_warnings) { |
| 497 | +#ifdef QPDF_OSS_FUZZ | |
| 498 | + if (m->warnings.size() > 20) { | |
| 499 | + *m->log->getWarn() << "WARNING: too many warnings - additional warnings surpressed\n"; | |
| 500 | + m->suppress_warnings = true; | |
| 501 | + return; | |
| 502 | + } | |
| 503 | +#endif | |
| 497 | 504 | *m->log->getWarn() << "WARNING: " << m->warnings.back().what() << "\n"; |
| 498 | 505 | } |
| 499 | 506 | } | ... | ... |