mirror of
https://github.com/qpdf/qpdf.git
synced 2025-01-02 22:50:20 +00:00
Suppress excessive warnings while fuzzing
Add extra fuzz test case and amend memory limit for Pl_DCT.
This commit is contained in:
parent
9081ac69cd
commit
42c511198b
@ -121,6 +121,7 @@ set(CORPUS_OTHER
|
|||||||
69857.fuzz
|
69857.fuzz
|
||||||
69913.fuzz
|
69913.fuzz
|
||||||
69969.fuzz
|
69969.fuzz
|
||||||
|
69977.fuzz
|
||||||
)
|
)
|
||||||
|
|
||||||
set(CORPUS_DIR ${CMAKE_CURRENT_BINARY_DIR}/qpdf_corpus)
|
set(CORPUS_DIR ${CMAKE_CURRENT_BINARY_DIR}/qpdf_corpus)
|
||||||
|
BIN
fuzz/qpdf_extra/69977.fuzz
Normal file
BIN
fuzz/qpdf_extra/69977.fuzz
Normal file
Binary file not shown.
@ -173,11 +173,11 @@ FuzzHelper::doChecks()
|
|||||||
{
|
{
|
||||||
// Get as much coverage as possible in parts of the library that
|
// Get as much coverage as possible in parts of the library that
|
||||||
// might benefit from fuzzing.
|
// might benefit from fuzzing.
|
||||||
std::cout << "starting testWrite\n";
|
std::cerr << "\ninfo: starting testWrite\n";
|
||||||
testWrite();
|
testWrite();
|
||||||
std::cout << "\nstarting testPages\n\n";
|
std::cerr << "\ninfo: starting testPages\n";
|
||||||
testPages();
|
testPages();
|
||||||
std::cout << "\nstarting testOutlines\n\n";
|
std::cerr << "\ninfo: starting testOutlines\n";
|
||||||
testOutlines();
|
testOutlines();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ my @fuzzers = (
|
|||||||
['pngpredictor' => 1],
|
['pngpredictor' => 1],
|
||||||
['runlength' => 6],
|
['runlength' => 6],
|
||||||
['tiffpredictor' => 2],
|
['tiffpredictor' => 2],
|
||||||
['qpdf' => 63], # increment when adding new files
|
['qpdf' => 64], # increment when adding new files
|
||||||
);
|
);
|
||||||
|
|
||||||
my $n_tests = 0;
|
my $n_tests = 0;
|
||||||
|
@ -320,7 +320,7 @@ Pl_DCT::decompress(void* cinfo_p, Buffer* b)
|
|||||||
cinfo->mem->max_memory_to_use = 1'000'000'000;
|
cinfo->mem->max_memory_to_use = 1'000'000'000;
|
||||||
// For some corrupt files the memory used internally by libjpeg stays within the above limits
|
// For some corrupt files the memory used internally by libjpeg stays within the above limits
|
||||||
// even though the size written to the next pipeline is significantly larger.
|
// even though the size written to the next pipeline is significantly larger.
|
||||||
m->corrupt_data_limit = 100'000'000;
|
m->corrupt_data_limit = 10'000'000;
|
||||||
#endif
|
#endif
|
||||||
jpeg_buffer_src(cinfo, b);
|
jpeg_buffer_src(cinfo, b);
|
||||||
|
|
||||||
|
@ -494,6 +494,13 @@ QPDF::warn(QPDFExc const& e)
|
|||||||
{
|
{
|
||||||
m->warnings.push_back(e);
|
m->warnings.push_back(e);
|
||||||
if (!m->suppress_warnings) {
|
if (!m->suppress_warnings) {
|
||||||
|
#ifdef QPDF_OSS_FUZZ
|
||||||
|
if (m->warnings.size() > 20) {
|
||||||
|
*m->log->getWarn() << "WARNING: too many warnings - additional warnings surpressed\n";
|
||||||
|
m->suppress_warnings = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
*m->log->getWarn() << "WARNING: " << m->warnings.back().what() << "\n";
|
*m->log->getWarn() << "WARNING: " << m->warnings.back().what() << "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user