Fuzz introspector: future_runlength_fuzzer
For issues and ideas: https://github.com/ossf/fuzz-introspector/issues

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
41 41 1 :

['Pl_RunLength::encode(unsigned char const*, unsigned long)']

41 41 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:27
32 32 1 :

['Pl_RunLength::flush_encode()']

32 32 Pl_RunLength::finish() call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:140

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 FuzzHelper::FuzzHelper(unsigned char const*, unsigned long) [function] [call site] 00001
1 FuzzHelper::run() [function] [call site] 00002
2 FuzzHelper::doChecks() [function] [call site] 00003
3 Pl_Discard::Pl_Discard() [function] [call site] 00004
4 Pipeline::Pipeline(char const*, Pipeline*) [function] [call site] 00005
3 Pl_RunLength::Pl_RunLength(char const*, Pipeline*, Pl_RunLength::action_e) [function] [call site] 00006
4 Pipeline::Pipeline(char const*, Pipeline*) [function] [call site] 00007
4 Pl_RunLength::Members::Members(Pl_RunLength::action_e) [function] [call site] 00008
4 Pipeline::~Pipeline() [function] [call site] 00009
3 Pl_RunLength::write(unsigned char const*, unsigned long) [function] [call site] 00010
4 Pl_RunLength::encode(unsigned char const*, unsigned long) [function] [call site] 00011
5 __cxa_allocate_exception [call site] 00012
5 QTC::TC(char const*, char const*, int) [function] [call site] 00013
5 Pl_RunLength::flush_encode() [function] [call site] 00014
6 QTC::TC(char const*, char const*, int) [function] [call site] 00015
6 QTC::TC(char const*, char const*, int) [function] [call site] 00016
6 __cxa_allocate_exception [call site] 00017
6 Pipeline::getNext(bool) [function] [call site] 00018
7 __cxa_allocate_exception [call site] 00019
6 Pipeline::getNext(bool) [function] [call site] 00020
6 Pipeline::getNext(bool) [function] [call site] 00021
6 Pipeline::getNext(bool) [function] [call site] 00022
5 Pl_RunLength::flush_encode() [function] [call site] 00023
3 Pl_RunLength::finish() [function] [call site] 00024
4 Pipeline::getNext(bool) [function] [call site] 00025
4 Pl_RunLength::flush_encode() [function] [call site] 00026
4 Pipeline::writeString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00027
5 Pipeline::write(char const*, unsigned long) [function] [call site] 00028
3 Pl_RunLength::~Pl_RunLength() [function] [call site] 00029
4 Pipeline::~Pipeline() [function] [call site] 00030
3 Pl_Discard::~Pl_Discard() [function] [call site] 00031
4 Pipeline::~Pipeline() [function] [call site] 00032
2 __cxa_end_catch [call site] 00033