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

Fuzzers overview

Fuzzer Fuzzer filename Functions Reached Functions unreached Fuzzer depth Files reached Basic blocks reached Cyclomatic complexity Details
runlength_fuzzer /src/qpdf/fuzz/runlength_fuzzer.cc 53 25 6 6 177 100 runlength_fuzzer.cc
future_tiffpredictor_fuzzer /src/qpdf/fuzz/tiffpredictor_fuzzer.cc 79 36 11 13 258 197 tiffpredictor_fuzzer.cc
future_lzw_fuzzer /src/qpdf/fuzz/lzw_fuzzer.cc 72 41 10 11 267 182 lzw_fuzzer.cc
lzw_fuzzer /src/qpdf/fuzz/lzw_fuzzer.cc 72 41 10 11 267 182 lzw_fuzzer.cc
future_flate_fuzzer /src/qpdf/fuzz/flate_fuzzer.cc 130 416 11 15 2636 1001 flate_fuzzer.cc
flate_fuzzer /src/qpdf/fuzz/flate_fuzzer.cc 130 416 11 15 2636 1001 flate_fuzzer.cc
tiffpredictor_fuzzer /src/qpdf/fuzz/tiffpredictor_fuzzer.cc 79 36 11 13 258 197 tiffpredictor_fuzzer.cc
future_runlength_fuzzer /src/qpdf/fuzz/runlength_fuzzer.cc 53 25 6 6 177 100 runlength_fuzzer.cc
future_ascii85_fuzzer /src/qpdf/fuzz/ascii85_fuzzer.cc 41 26 5 7 127 76 ascii85_fuzzer.cc
dct_fuzzer /src/qpdf/fuzz/dct_fuzzer.cc 231 517 10 53 3997 1680 dct_fuzzer.cc
pngpredictor_fuzzer /src/qpdf/fuzz/pngpredictor_fuzzer.cc 57 29 8 8 195 142 pngpredictor_fuzzer.cc
hex_fuzzer /src/qpdf/fuzz/hex_fuzzer.cc 40 28 5 7 123 77 hex_fuzzer.cc
future_pngpredictor_fuzzer /src/qpdf/fuzz/pngpredictor_fuzzer.cc 57 29 8 8 195 142 pngpredictor_fuzzer.cc
ascii85_fuzzer /src/qpdf/fuzz/ascii85_fuzzer.cc 41 26 5 7 127 76 ascii85_fuzzer.cc
future_hex_fuzzer /src/qpdf/fuzz/hex_fuzzer.cc 40 28 5 7 123 77 hex_fuzzer.cc
future_dct_fuzzer /src/qpdf/fuzz/dct_fuzzer.cc 231 517 10 53 3997 1680 dct_fuzzer.cc
json_fuzzer /src/qpdf/fuzz/json_fuzzer.cc 1396 2164 41 66 11655 8199 json_fuzzer.cc
future_qpdf_pages_fuzzer /src/qpdf/fuzz/qpdf_pages_fuzzer.cc 2007 1959 41 101 18309 13149 qpdf_pages_fuzzer.cc
future_qpdf_outlines_fuzzer /src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 1528 2156 41 81 12520 8938 qpdf_outlines_fuzzer.cc
qpdf_outlines_fuzzer /src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 1528 2153 41 81 12527 8944 qpdf_outlines_fuzzer.cc
qpdf_pages_fuzzer /src/qpdf/fuzz/qpdf_pages_fuzzer.cc 2007 1956 41 101 18316 13155 qpdf_pages_fuzzer.cc
future_json_fuzzer /src/qpdf/fuzz/json_fuzzer.cc 1396 2167 41 66 11655 8199 json_fuzzer.cc
qpdf_crypt_fuzzer /src/qpdf/fuzz/qpdf_crypt_fuzzer.cc 1952 2063 41 89 18847 12265 qpdf_crypt_fuzzer.cc
qpdf_fuzzer /src/qpdf/fuzz/qpdf_fuzzer.cc 1932 2073 41 89 18684 12172 qpdf_fuzzer.cc
future_qpdf_crypt_fuzzer /src/qpdf/fuzz/qpdf_crypt_fuzzer.cc 1952 2066 41 89 18840 12259 qpdf_crypt_fuzzer.cc
future_qpdf_lin_fuzzer /src/qpdf/fuzz/qpdf_lin_fuzzer.cc 1934 2075 41 89 18684 12169 qpdf_lin_fuzzer.cc
future_qpdf_fuzzer /src/qpdf/fuzz/qpdf_fuzzer.cc 1932 2076 41 89 18677 12166 qpdf_fuzzer.cc
future_qpdf_crypt_insecure_fuzzer /src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc 1952 2066 41 89 18837 12258 qpdf_crypt_insecure_fuzzer.cc
qpdf_lin_fuzzer /src/qpdf/fuzz/qpdf_lin_fuzzer.cc 1934 2072 41 89 18691 12175 qpdf_lin_fuzzer.cc
qpdf_crypt_insecure_fuzzer /src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc 1952 2063 41 89 18844 12264 qpdf_crypt_insecure_fuzzer.cc

Project functions overview

The following table shows data about each function in the project. The functions included in this table correspond to all functions that exist in the executables of the fuzzers. As such, there may be functions that are from third-party libraries.

For further technical details on the meaning of columns in the below table, please see the Glossary .

Func name Functions filename Args Function call depth Reached by Fuzzers Runtime reached by Fuzzers Combined reached by Fuzzers Fuzzers runtime hit Func lines hit % I Count BB Count Cyclomatic complexity Functions reached Reached by functions Accumulated cyclomatic complexity Undiscovered complexity

Fuzzer details

Fuzzer: runlength_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 27 44.2%
gold [1:9] 0 0.0%
yellow [10:29] 5 8.19%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 29 47.5%
All colors 61 100

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
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51
20 20 1 :

['Pl_RunLength::flush_encode()']

20 24 Pl_RunLength::finish() call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:166
0 0 None 0 0 Pl_RunLength::Pl_RunLength(charconst*,Pipeline*,Pl_RunLength::action_e) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:32

Runtime coverage analysis

Covered functions
21
Functions that are reachable but not covered
20
Reachable functions
53
Percentage of reachable functions covered
62.26%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/runlength_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_RunLength.cc 8
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 3
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1

Fuzzer: future_tiffpredictor_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 49 57.6%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 36 42.3%
All colors 85 100

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
10 10 4 :

['std::out_of_range::out_of_range[abi:ne180100](char const*)', '__cxa_allocate_exception', '__cxa_free_exception', '__cxa_throw']

10 10 read_bits(unsignedcharconst*&,unsignedlong&,unsignedlong&,unsignedlong) call site: 00000 /src/qpdf/libqpdf/qpdf/bits_functions.hh:34
10 10 4 :

['std::out_of_range::out_of_range[abi:ne180100](char const*)', '__cxa_allocate_exception', '__cxa_free_exception', '__cxa_throw']

10 10 write_bits(unsignedchar&,unsignedlong&,unsignedlonglong,unsignedlong,Pipeline*) call site: 00000 /src/qpdf/libqpdf/qpdf/bits_functions.hh:89
8 8 4 :

['__cxa_throw', 'std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception']

8 8 BitStream::reset() call site: 00000 /src/qpdf/libqpdf/BitStream.cc:21
0 0 None 32 34 Pl_TIFFPredictor::Pl_TIFFPredictor(charconst*,Pipeline*,Pl_TIFFPredictor::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:28
0 0 None 8 10 Pl_TIFFPredictor::Pl_TIFFPredictor(charconst*,Pipeline*,Pl_TIFFPredictor::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:31
0 0 None 8 10 Pl_TIFFPredictor::Pl_TIFFPredictor(charconst*,Pipeline*,Pl_TIFFPredictor::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:34
0 0 None 8 10 Pl_TIFFPredictor::Pl_TIFFPredictor(charconst*,Pipeline*,Pl_TIFFPredictor::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:38
0 0 None 0 86 Pl_TIFFPredictor::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:85
0 0 None 0 2 Pl_TIFFPredictor::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:107

Runtime coverage analysis

Covered functions
28
Functions that are reachable but not covered
28
Reachable functions
79
Percentage of reachable functions covered
64.56%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/tiffpredictor_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 4
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/BitStream.cc 3
/src/qpdf/include/qpdf/QIntC.hh 3
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/libqpdf/qpdf/bits_functions.hh 2
/src/qpdf/libqpdf/qpdf/Pl_TIFFPredictor.hh 1

Fuzzer: future_lzw_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 31 36.0%
gold [1:9] 5 5.81%
yellow [10:29] 5 5.81%
greenyellow [30:49] 5 5.81%
lawngreen 50+ 40 46.5%
All colors 86 100

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
8 8 4 :

['std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception', '__cxa_throw']

8 8 Pl_LZWDecoder::getFirstChar(unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_LZWDecoder.cc:86
8 8 4 :

['std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception', '__cxa_throw']

8 8 Pl_LZWDecoder::addToTable(unsignedchar) call site: 00000 /src/qpdf/libqpdf/Pl_LZWDecoder.cc:111
0 0 None 0 0 Buffer::Members::Members(unsignedlong,unsignedchar*,bool) call site: 00000 /src/qpdf/libqpdf/Buffer.cc:30
0 0 None 0 0 Pl_LZWDecoder::Pl_LZWDecoder(charconst*,Pipeline*,bool) call site: 00000 /src/qpdf/libqpdf/Pl_LZWDecoder.cc:13

Runtime coverage analysis

Covered functions
29
Functions that are reachable but not covered
23
Reachable functions
72
Percentage of reachable functions covered
68.06%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/lzw_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_LZWDecoder.cc 7
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 3
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/qpdf/Pl_LZWDecoder.hh 1

Fuzzer: lzw_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 31 36.0%
gold [1:9] 5 5.81%
yellow [10:29] 5 5.81%
greenyellow [30:49] 5 5.81%
lawngreen 50+ 40 46.5%
All colors 86 100

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
8 8 4 :

['std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception', '__cxa_throw']

8 8 Pl_LZWDecoder::getFirstChar(unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_LZWDecoder.cc:86
8 8 4 :

['std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception', '__cxa_throw']

8 8 Pl_LZWDecoder::addToTable(unsignedchar) call site: 00000 /src/qpdf/libqpdf/Pl_LZWDecoder.cc:111
0 0 None 0 0 Buffer::Members::Members(unsignedlong,unsignedchar*,bool) call site: 00000 /src/qpdf/libqpdf/Buffer.cc:30
0 0 None 0 0 Pl_LZWDecoder::Pl_LZWDecoder(charconst*,Pipeline*,bool) call site: 00000 /src/qpdf/libqpdf/Pl_LZWDecoder.cc:13

Runtime coverage analysis

Covered functions
29
Functions that are reachable but not covered
23
Reachable functions
72
Percentage of reachable functions covered
68.06%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/lzw_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_LZWDecoder.cc 7
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 3
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/qpdf/Pl_LZWDecoder.hh 1

Fuzzer: future_flate_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 142 62.8%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 84 37.1%
All colors 226 100

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
38 38 1 :

['inflateInit_']

370 935 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:151
21 21 1 :

['crc32']

579 630 deflate call site: 00098 /src/zlib/deflate.c:1160
21 21 1 :

['crc32']

21 21 read_buf call site: 00106 /src/zlib/deflate.c:227
14 35 3 :

['inflateEnd', 'deflateEnd', '__clang_call_terminate']

14 35 Pl_Flate::Members::~Members() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:55
12 12 1 :

['inflateEnd']

30 81 Pl_Flate::finish() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:240
12 12 8 :

['__cxa_guard_acquire', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100]()', '__cxa_guard_release', 'QUtil::get_env(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator >*)', 'bool std::__1::operator==[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator > const&, char const*)', '__cxa_guard_abort']

12 12 Pl_Flate::zopfli_enabled() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:352
8 8 4 :

['__cxa_throw', 'std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception']

8 8 Pl_Flate::Members::Members(unsignedlong,Pl_Flate::action_e) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:34
8 8 13 :

['std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator > const&, char const*)', 'std::__1::basic_string , std::__1::allocator >::operator+=[abi:ne180100](char const*)', '__cxa_free_exception', '__cxa_throw', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', '__cxa_allocate_exception', 'std::__1::basic_string , std::__1::allocator >::operator+=[abi:ne180100](std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'std::__1::to_string(int)', 'std::__1::unique_ptr >::operator->[abi:ne180100]() const', 'std::runtime_error::runtime_error(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)']

8 8 Pl_Flate::checkError(charconst*,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:272
7 14 2 :

['_tr_stored_block', '_tr_align']

7 38 deflate call site: 00143 /src/zlib/deflate.c:1211
2 2 1 :

['Pl_Flate::finish_zopfli()']

20 24 Pl_Flate::finish() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:231
0 21 1 :

['deflateEnd']

0 21 deflateInit2_ call site: 00038 /src/zlib/deflate.c:499
0 0 None 747 869 deflate call site: 00079 /src/zlib/deflate.c:1009

Runtime coverage analysis

Covered functions
66
Functions that are reachable but not covered
55
Reachable functions
130
Percentage of reachable functions covered
57.69%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/flate_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 8
/src/qpdf/include/qpdf/QIntC.hh 9
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1

Fuzzer: flate_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 142 62.8%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 84 37.1%
All colors 226 100

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
38 38 1 :

['inflateInit_']

370 935 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:151
21 21 1 :

['crc32']

579 630 deflate call site: 00098 /src/zlib/deflate.c:1160
21 21 1 :

['crc32']

21 21 read_buf call site: 00106 /src/zlib/deflate.c:227
14 35 3 :

['inflateEnd', 'deflateEnd', '__clang_call_terminate']

14 35 Pl_Flate::Members::~Members() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:55
12 12 1 :

['inflateEnd']

30 81 Pl_Flate::finish() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:240
12 12 8 :

['__cxa_guard_acquire', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100]()', '__cxa_guard_release', 'QUtil::get_env(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator >*)', 'bool std::__1::operator==[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator > const&, char const*)', '__cxa_guard_abort']

12 12 Pl_Flate::zopfli_enabled() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:352
8 8 4 :

['__cxa_throw', 'std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception']

8 8 Pl_Flate::Members::Members(unsignedlong,Pl_Flate::action_e) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:34
8 8 13 :

['std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator > const&, char const*)', 'std::__1::basic_string , std::__1::allocator >::operator+=[abi:ne180100](char const*)', '__cxa_free_exception', '__cxa_throw', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', '__cxa_allocate_exception', 'std::__1::basic_string , std::__1::allocator >::operator+=[abi:ne180100](std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'std::__1::to_string(int)', 'std::__1::unique_ptr >::operator->[abi:ne180100]() const', 'std::runtime_error::runtime_error(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)']

8 8 Pl_Flate::checkError(charconst*,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:272
7 14 2 :

['_tr_stored_block', '_tr_align']

7 38 deflate call site: 00143 /src/zlib/deflate.c:1211
2 2 1 :

['Pl_Flate::finish_zopfli()']

20 24 Pl_Flate::finish() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:231
0 21 1 :

['deflateEnd']

0 21 deflateInit2_ call site: 00038 /src/zlib/deflate.c:499
0 0 None 747 869 deflate call site: 00079 /src/zlib/deflate.c:1009

Runtime coverage analysis

Covered functions
66
Functions that are reachable but not covered
55
Reachable functions
130
Percentage of reachable functions covered
57.69%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/flate_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 8
/src/qpdf/include/qpdf/QIntC.hh 9
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1

Fuzzer: tiffpredictor_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 49 57.6%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 36 42.3%
All colors 85 100

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
10 10 4 :

['std::out_of_range::out_of_range[abi:ne180100](char const*)', '__cxa_allocate_exception', '__cxa_free_exception', '__cxa_throw']

10 10 read_bits(unsignedcharconst*&,unsignedlong&,unsignedlong&,unsignedlong) call site: 00000 /src/qpdf/libqpdf/qpdf/bits_functions.hh:34
10 10 4 :

['std::out_of_range::out_of_range[abi:ne180100](char const*)', '__cxa_allocate_exception', '__cxa_free_exception', '__cxa_throw']

10 10 write_bits(unsignedchar&,unsignedlong&,unsignedlonglong,unsignedlong,Pipeline*) call site: 00000 /src/qpdf/libqpdf/qpdf/bits_functions.hh:89
8 8 4 :

['__cxa_throw', 'std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception']

8 8 BitStream::reset() call site: 00000 /src/qpdf/libqpdf/BitStream.cc:21
0 0 None 32 34 Pl_TIFFPredictor::Pl_TIFFPredictor(charconst*,Pipeline*,Pl_TIFFPredictor::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:28
0 0 None 8 10 Pl_TIFFPredictor::Pl_TIFFPredictor(charconst*,Pipeline*,Pl_TIFFPredictor::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:31
0 0 None 8 10 Pl_TIFFPredictor::Pl_TIFFPredictor(charconst*,Pipeline*,Pl_TIFFPredictor::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:34
0 0 None 8 10 Pl_TIFFPredictor::Pl_TIFFPredictor(charconst*,Pipeline*,Pl_TIFFPredictor::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:38
0 0 None 0 86 Pl_TIFFPredictor::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:85
0 0 None 0 2 Pl_TIFFPredictor::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:107

Runtime coverage analysis

Covered functions
28
Functions that are reachable but not covered
28
Reachable functions
79
Percentage of reachable functions covered
64.56%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/tiffpredictor_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 4
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/BitStream.cc 3
/src/qpdf/include/qpdf/QIntC.hh 3
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/libqpdf/qpdf/bits_functions.hh 2
/src/qpdf/libqpdf/qpdf/Pl_TIFFPredictor.hh 1

Fuzzer: future_runlength_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 27 44.2%
gold [1:9] 0 0.0%
yellow [10:29] 5 8.19%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 29 47.5%
All colors 61 100

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
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51
20 20 1 :

['Pl_RunLength::flush_encode()']

20 24 Pl_RunLength::finish() call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:166
0 0 None 0 0 Pl_RunLength::Pl_RunLength(charconst*,Pipeline*,Pl_RunLength::action_e) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:32

Runtime coverage analysis

Covered functions
21
Functions that are reachable but not covered
20
Reachable functions
53
Percentage of reachable functions covered
62.26%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/runlength_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_RunLength.cc 8
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 3
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1

Fuzzer: future_ascii85_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 6 12.5%
gold [1:9] 6 12.5%
yellow [10:29] 10 20.8%
greenyellow [30:49] 2 4.16%
lawngreen 50+ 24 50.0%
All colors 48 100

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
0 0 None 0 0 Pl_ASCII85Decoder::Pl_ASCII85Decoder(charconst*,Pipeline*) call site: 00000 /src/qpdf/libqpdf/Pl_ASCII85Decoder.cc:10
0 0 None 0 0 Pl_ASCII85Decoder::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_ASCII85Decoder.cc:18
0 0 None 0 0 Pl_ASCII85Decoder::finish() call site: 00000 /src/qpdf/libqpdf/Pl_ASCII85Decoder.cc:107

Runtime coverage analysis

Covered functions
16
Functions that are reachable but not covered
14
Reachable functions
41
Percentage of reachable functions covered
65.85%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/ascii85_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_ASCII85Decoder.cc 4
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_ASCII85Decoder.hh 1

Fuzzer: dct_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 179 55.0%
gold [1:9] 18 5.53%
yellow [10:29] 6 1.84%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 122 37.5%
All colors 325 100

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
60 60 1 :

['do_sarray_io']

60 62 access_virt_sarray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:941
28 28 1 :

['do_barray_io']

28 30 access_virt_barray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:1025
8 8 4 :

['std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception', '__cxa_throw']

8 8 skip_buffer_input_data(jpeg_decompress_struct*,long) call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:288
5 5 1 :

['jpeg_destroy_compress']

17 22 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:209
2 2 1 :

['out_of_memory']

2 106 alloc_sarray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:462
2 2 1 :

['__isoc99_sscanf']

2 2 jinit_memory_mgr call site: 00032 /src/libjpeg-turbo/src/jmemmgr.c:1274
2 2 1 :

['out_of_memory']

2 2 alloc_large call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:395
0 834 1 :

['Pl_DCT::compress(void*)']

25 864 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:194
0 2 1 :

['jpeg_mem_term']

8 10 jinit_memory_mgr call site: 00028 /src/libjpeg-turbo/src/jmemmgr.c:1228
0 2 1 :

['Pipeline::next() const']

0 2 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:172
0 0 None 221 728 master_selection call site: 00228 /src/libjpeg-turbo/src/jdmaster.c:539
0 0 None 221 699 master_selection call site: 00229 /src/libjpeg-turbo/src/jdmaster.c:550

Runtime coverage analysis

Covered functions
206
Functions that are reachable but not covered
124
Reachable functions
231
Percentage of reachable functions covered
46.32%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/dct_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_DCT.cc 13
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/libjpeg-turbo/src/jerror.c 1
/src/libjpeg-turbo/src/jcapimin.c 4
/src/libjpeg-turbo/src/jmemmgr.c 1
/src/libjpeg-turbo/src/jmemnobs.c 3
/src/libjpeg-turbo/src/jcparam.c 7
/src/libjpeg-turbo/src/jcomapi.c 4
/src/libjpeg-turbo/src/jstdhuff.c 2
/src/libjpeg-turbo/src/wrapper/../jcapistd.c 2
/src/libjpeg-turbo/src/jcinit.c 1
/src/libjpeg-turbo/src/jcmaster.c 4
/src/libjpeg-turbo/src/wrapper/../jutils.c 2
/src/libjpeg-turbo/src/wrapper/../jccolor.c 3
/src/libjpeg-turbo/simd/x86_64/jsimd.c 20
/src/libjpeg-turbo/src/wrapper/../jcsample.c 3
/src/libjpeg-turbo/src/wrapper/../jcprepct.c 4
/src/libjpeg-turbo/src/wrapper/../jclossls.c 3
/src/libjpeg-turbo/src/jclhuff.c 1
/src/libjpeg-turbo/src/wrapper/../jcdiffct.c 3
/src/libjpeg-turbo/src/wrapper/../jcdctmgr.c 2
/src/libjpeg-turbo/src/jcarith.c 1
/src/libjpeg-turbo/src/jcphuff.c 1
/src/libjpeg-turbo/src/jchuff.c 1
/src/libjpeg-turbo/src/wrapper/../jccoefct.c 2
/src/libjpeg-turbo/src/wrapper/../jcmainct.c 3
/src/libjpeg-turbo/src/jcmarker.c 1
/src/qpdf/include/qpdf/QIntC.hh 9
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/libjpeg-turbo/src/jdapimin.c 6
/src/libjpeg-turbo/src/jdmarker.c 2
/src/libjpeg-turbo/src/jdinput.c 1
/src/libjpeg-turbo/src/jdmaster.c 6
/src/libjpeg-turbo/src/wrapper/../jdapistd.c 3
/src/libjpeg-turbo/src/wrapper/../jquant1.c 8
/src/libjpeg-turbo/src/wrapper/../jquant2.c 3
/src/libjpeg-turbo/src/wrapper/../jdmerge.c 3
/src/libjpeg-turbo/src/wrapper/../jdcolor.c 5
/src/libjpeg-turbo/src/wrapper/../jdsample.c 3
/src/libjpeg-turbo/src/wrapper/../jdpostct.c 3
/src/libjpeg-turbo/src/wrapper/../jdlossls.c 3
/src/libjpeg-turbo/src/jdlhuff.c 1
/src/libjpeg-turbo/src/wrapper/../jddiffct.c 3
/src/libjpeg-turbo/src/wrapper/../jddctmgr.c 2
/src/libjpeg-turbo/src/jdarith.c 1
/src/libjpeg-turbo/src/jdphuff.c 1
/src/libjpeg-turbo/src/jdhuff.c 1
/src/libjpeg-turbo/src/wrapper/../jdcoefct.c 2
/src/libjpeg-turbo/src/wrapper/../jdmainct.c 4

Fuzzer: pngpredictor_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 27 43.5%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 35 56.4%
All colors 62 100

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
8 8 4 :

['__cxa_throw', 'std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception']

8 10 Pl_PNGFilter::Pl_PNGFilter(charconst*,Pipeline*,Pl_PNGFilter::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:47
6 6 1 :

['Pl_PNGFilter::encodeRow()']

6 6 Pl_PNGFilter::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:98
0 0 None 32 38 Pl_PNGFilter::Pl_PNGFilter(charconst*,Pipeline*,Pl_PNGFilter::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:31
0 0 None 8 10 Pl_PNGFilter::Pl_PNGFilter(charconst*,Pipeline*,Pl_PNGFilter::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:34
0 0 None 8 10 Pl_PNGFilter::Pl_PNGFilter(charconst*,Pipeline*,Pl_PNGFilter::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:44

Runtime coverage analysis

Covered functions
25
Functions that are reachable but not covered
12
Reachable functions
57
Percentage of reachable functions covered
78.95%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/pngpredictor_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_PNGFilter.cc 12
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1

Fuzzer: hex_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 6 16.6%
gold [1:9] 1 2.77%
yellow [10:29] 0 0.0%
greenyellow [30:49] 6 16.6%
lawngreen 50+ 23 63.8%
All colors 36 100

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
0 0 None 0 0 Pl_ASCIIHexDecoder::Pl_ASCIIHexDecoder(charconst*,Pipeline*) call site: 00000 /src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc:12
0 0 None 0 0 Pl_ASCIIHexDecoder::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc:20

Runtime coverage analysis

Covered functions
16
Functions that are reachable but not covered
13
Reachable functions
40
Percentage of reachable functions covered
67.5%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/hex_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc 4
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_ASCIIHexDecoder.hh 1

Fuzzer: future_pngpredictor_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 27 43.5%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 35 56.4%
All colors 62 100

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
8 8 4 :

['__cxa_throw', 'std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception']

8 10 Pl_PNGFilter::Pl_PNGFilter(charconst*,Pipeline*,Pl_PNGFilter::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:47
6 6 1 :

['Pl_PNGFilter::encodeRow()']

6 6 Pl_PNGFilter::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:98
0 0 None 32 38 Pl_PNGFilter::Pl_PNGFilter(charconst*,Pipeline*,Pl_PNGFilter::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:31
0 0 None 8 10 Pl_PNGFilter::Pl_PNGFilter(charconst*,Pipeline*,Pl_PNGFilter::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:34
0 0 None 8 10 Pl_PNGFilter::Pl_PNGFilter(charconst*,Pipeline*,Pl_PNGFilter::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:44

Runtime coverage analysis

Covered functions
25
Functions that are reachable but not covered
12
Reachable functions
57
Percentage of reachable functions covered
78.95%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/pngpredictor_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_PNGFilter.cc 12
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1

Fuzzer: ascii85_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 6 12.5%
gold [1:9] 6 12.5%
yellow [10:29] 10 20.8%
greenyellow [30:49] 2 4.16%
lawngreen 50+ 24 50.0%
All colors 48 100

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
0 0 None 0 0 Pl_ASCII85Decoder::Pl_ASCII85Decoder(charconst*,Pipeline*) call site: 00000 /src/qpdf/libqpdf/Pl_ASCII85Decoder.cc:10
0 0 None 0 0 Pl_ASCII85Decoder::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_ASCII85Decoder.cc:18
0 0 None 0 0 Pl_ASCII85Decoder::finish() call site: 00000 /src/qpdf/libqpdf/Pl_ASCII85Decoder.cc:107

Runtime coverage analysis

Covered functions
16
Functions that are reachable but not covered
14
Reachable functions
41
Percentage of reachable functions covered
65.85%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/ascii85_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_ASCII85Decoder.cc 4
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_ASCII85Decoder.hh 1

Fuzzer: future_hex_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 6 16.6%
gold [1:9] 1 2.77%
yellow [10:29] 0 0.0%
greenyellow [30:49] 6 16.6%
lawngreen 50+ 23 63.8%
All colors 36 100

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
0 0 None 0 0 Pl_ASCIIHexDecoder::Pl_ASCIIHexDecoder(charconst*,Pipeline*) call site: 00000 /src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc:12
0 0 None 0 0 Pl_ASCIIHexDecoder::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc:20

Runtime coverage analysis

Covered functions
16
Functions that are reachable but not covered
13
Reachable functions
40
Percentage of reachable functions covered
67.5%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/hex_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc 4
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_ASCIIHexDecoder.hh 1

Fuzzer: future_dct_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 179 55.0%
gold [1:9] 18 5.53%
yellow [10:29] 6 1.84%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 122 37.5%
All colors 325 100

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
60 60 1 :

['do_sarray_io']

60 62 access_virt_sarray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:941
28 28 1 :

['do_barray_io']

28 30 access_virt_barray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:1025
8 8 4 :

['std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__cxa_free_exception', '__cxa_throw']

8 8 skip_buffer_input_data(jpeg_decompress_struct*,long) call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:288
5 5 1 :

['jpeg_destroy_compress']

17 22 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:209
2 2 1 :

['out_of_memory']

2 106 alloc_sarray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:462
2 2 1 :

['__isoc99_sscanf']

2 2 jinit_memory_mgr call site: 00032 /src/libjpeg-turbo/src/jmemmgr.c:1274
2 2 1 :

['out_of_memory']

2 2 alloc_large call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:395
0 834 1 :

['Pl_DCT::compress(void*)']

25 864 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:194
0 2 1 :

['jpeg_mem_term']

8 10 jinit_memory_mgr call site: 00028 /src/libjpeg-turbo/src/jmemmgr.c:1228
0 2 1 :

['Pipeline::next() const']

0 2 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:172
0 0 None 221 728 master_selection call site: 00228 /src/libjpeg-turbo/src/jdmaster.c:539
0 0 None 221 699 master_selection call site: 00229 /src/libjpeg-turbo/src/jdmaster.c:550

Runtime coverage analysis

Covered functions
206
Functions that are reachable but not covered
124
Reachable functions
231
Percentage of reachable functions covered
46.32%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/dct_fuzzer.cc 4
/src/qpdf/libqpdf/Pl_DCT.cc 13
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/libjpeg-turbo/src/jerror.c 1
/src/libjpeg-turbo/src/jcapimin.c 4
/src/libjpeg-turbo/src/jmemmgr.c 1
/src/libjpeg-turbo/src/jmemnobs.c 3
/src/libjpeg-turbo/src/jcparam.c 7
/src/libjpeg-turbo/src/jcomapi.c 4
/src/libjpeg-turbo/src/jstdhuff.c 2
/src/libjpeg-turbo/src/wrapper/../jcapistd.c 2
/src/libjpeg-turbo/src/jcinit.c 1
/src/libjpeg-turbo/src/jcmaster.c 4
/src/libjpeg-turbo/src/wrapper/../jutils.c 2
/src/libjpeg-turbo/src/wrapper/../jccolor.c 3
/src/libjpeg-turbo/simd/x86_64/jsimd.c 20
/src/libjpeg-turbo/src/wrapper/../jcsample.c 3
/src/libjpeg-turbo/src/wrapper/../jcprepct.c 4
/src/libjpeg-turbo/src/wrapper/../jclossls.c 3
/src/libjpeg-turbo/src/jclhuff.c 1
/src/libjpeg-turbo/src/wrapper/../jcdiffct.c 3
/src/libjpeg-turbo/src/wrapper/../jcdctmgr.c 2
/src/libjpeg-turbo/src/jcarith.c 1
/src/libjpeg-turbo/src/jcphuff.c 1
/src/libjpeg-turbo/src/jchuff.c 1
/src/libjpeg-turbo/src/wrapper/../jccoefct.c 2
/src/libjpeg-turbo/src/wrapper/../jcmainct.c 3
/src/libjpeg-turbo/src/jcmarker.c 1
/src/qpdf/include/qpdf/QIntC.hh 9
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/libjpeg-turbo/src/jdapimin.c 6
/src/libjpeg-turbo/src/jdmarker.c 2
/src/libjpeg-turbo/src/jdinput.c 1
/src/libjpeg-turbo/src/jdmaster.c 6
/src/libjpeg-turbo/src/wrapper/../jdapistd.c 3
/src/libjpeg-turbo/src/wrapper/../jquant1.c 8
/src/libjpeg-turbo/src/wrapper/../jquant2.c 3
/src/libjpeg-turbo/src/wrapper/../jdmerge.c 3
/src/libjpeg-turbo/src/wrapper/../jdcolor.c 5
/src/libjpeg-turbo/src/wrapper/../jdsample.c 3
/src/libjpeg-turbo/src/wrapper/../jdpostct.c 3
/src/libjpeg-turbo/src/wrapper/../jdlossls.c 3
/src/libjpeg-turbo/src/jdlhuff.c 1
/src/libjpeg-turbo/src/wrapper/../jddiffct.c 3
/src/libjpeg-turbo/src/wrapper/../jddctmgr.c 2
/src/libjpeg-turbo/src/jdarith.c 1
/src/libjpeg-turbo/src/jdphuff.c 1
/src/libjpeg-turbo/src/jdhuff.c 1
/src/libjpeg-turbo/src/wrapper/../jdcoefct.c 2
/src/libjpeg-turbo/src/wrapper/../jdmainct.c 4

Fuzzer: json_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 2363 75.8%
gold [1:9] 31 0.99%
yellow [10:29] 48 1.53%
greenyellow [30:49] 18 0.57%
lawngreen 50+ 657 21.0%
All colors 3117 100

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
108859 508137 61 :

['std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QPDF::EncryptionParameters::initialize(QPDF&)::$_1::operator()(std::__1::basic_string , std::__1::allocator > const&) const', 'qpdf::BaseDictionary::begin()', 'qpdf::BaseDictionary::end()', 'std::__1::operator!=[abi:ne180100](std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> > const&, std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> > const&)', 'QPDFObjectHandle::isDictionary() const', 'std::__1::to_string(int)', 'std::__1::tuple_element<0ul, std::__1::pair , std::__1::allocator > const, QPDFObjectHandle> >::type const& std::__1::get[abi:ne180100]<0ul, std::__1::basic_string , std::__1::allocator > const, QPDFObjectHandle>(std::__1::pair , std::__1::allocator > const, QPDFObjectHandle> const&)', 'QPDFObjectHandle::isInteger() const', 'QPDFObjectHandle::isBool() const', 'QPDF::EncryptionParameters::interpretCF(QPDFObjectHandle const&) const', 'QPDF::EncryptionData::~EncryptionData()', 'QPDFObjectHandle::isName() const', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getIntValue() const', 'QUtil::hex_decode(std::__1::basic_string , std::__1::allocator > const&)', 'QPDF::damagedPDF(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator >::length[abi:ne180100]() const', 'std::__1::bitset<32ul>::bitset[abi:ne180100](unsigned long long)', 'QTC::TC(char const*, char const*, int)', 'QPDFObjectHandle::getBoolValue() const', 'QPDF::warn(QPDFExc const&)', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100]()', 'QPDFExc::~QPDFExc()', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::getIntValueAsInt() const', 'QPDF::damagedPDF(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](std::__1::basic_string , std::__1::allocator >&&)', 'std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> >::operator++[abi:ne180100]()', 'QPDF::EncryptionParameters::initialize(QPDF&)::$_0::operator()(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDF::EncryptionData::EncryptionData(int, int, int, int, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, bool)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'bool std::__1::operator==[abi:ne180100] >(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&)', 'QPDFObjectHandle::isString() const', 'QPDF::EncryptionData::check_user_password(std::__1::basic_string , std::__1::allocator > const&) const', 'qpdf::Dictionary::~Dictionary()', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'QPDFObjectHandle::~QPDFObjectHandle()', 'qpdf::BaseHandle::size() const', 'QPDFObjectHandle::isNull() const', 'bool std::__1::operator==[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator > const&, char const*)', 'QPDF::EncryptionData::recover_encryption_key_with_password(std::__1::basic_string , std::__1::allocator > const&, bool&) const', 'QPDFObjectHandle::as_dictionary(qpdf::typed) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'QPDF::EncryptionData::check_owner_password(std::__1::basic_string , std::__1::allocator >&, std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator >&&)', '__cxa_free_exception', '__cxa_throw', 'std::__1::map , std::__1::allocator >, QPDF::encryption_method_e, std::__1::less , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > const, QPDF::encryption_method_e> > >::operator[](std::__1::basic_string , std::__1::allocator > const&)', '__cxa_allocate_exception', 'pad_short_parameter(std::__1::basic_string , std::__1::allocator >&, unsigned long)', 'std::__1::tuple_element<1ul, std::__1::pair , std::__1::allocator > const, QPDFObjectHandle> >::type const& std::__1::get[abi:ne180100]<1ul, std::__1::basic_string , std::__1::allocator > const, QPDFObjectHandle>(std::__1::pair , std::__1::allocator > const, QPDFObjectHandle> const&)', 'QPDF::getTrimmedUserPassword() const', 'QPDFExc::QPDFExc(qpdf_error_code_e, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, long long, std::__1::basic_string , std::__1::allocator > const&)', 'QPDF::EncryptionParameters::initialize(QPDF&)::$_2::operator()(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator >::operator=(std::__1::basic_string , std::__1::allocator > const&)', 'QPDFObjectHandle::getName() const', 'QPDF::EncryptionData::compute_encryption_key(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> >::operator*[abi:ne180100]() const', 'QPDFObjectHandle::getStringValue() const']

108859 508137 QPDF::EncryptionParameters::initialize(QPDF&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:657
7207 7207 1 :

['QPDF::pushInheritedAttributesToPage()']

7207 7207 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:512
7205 21603 7 :

['bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Reference& std::__1::get[abi:ne180100] (std::__1::variant &)', 'QPDF::Resolver::resolved(QPDF*, QPDFObjGen)', 'qpdf::BaseHandle::BaseHandle(std::__1::shared_ptr const&)', 'bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Dictionary* qpdf::BaseHandle::as () const', 'qpdf::BaseHandle::~BaseHandle()']

7205 21603 QPDF_Dictionary*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:389
7205 21603 7 :

['bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Reference& std::__1::get[abi:ne180100] (std::__1::variant &)', 'QPDF::Resolver::resolved(QPDF*, QPDFObjGen)', 'qpdf::BaseHandle::BaseHandle(std::__1::shared_ptr const&)', 'bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'qpdf::BaseHandle::~BaseHandle()', 'QPDF_Stream* qpdf::BaseHandle::as () const']

7205 21603 QPDF_Stream*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:389
7205 21603 7 :

['bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Reference& std::__1::get[abi:ne180100] (std::__1::variant &)', 'QPDF::Resolver::resolved(QPDF*, QPDFObjGen)', 'qpdf::BaseHandle::BaseHandle(std::__1::shared_ptr const&)', 'bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Integer* qpdf::BaseHandle::as () const', 'qpdf::BaseHandle::~BaseHandle()']

7205 21603 QPDF_Integer*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:389
7205 21603 7 :

['bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Reference& std::__1::get[abi:ne180100] (std::__1::variant &)', 'QPDF::Resolver::resolved(QPDF*, QPDFObjGen)', 'qpdf::BaseHandle::BaseHandle(std::__1::shared_ptr const&)', 'bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Array* qpdf::BaseHandle::as () const', 'qpdf::BaseHandle::~BaseHandle()']

7205 21603 QPDF_Array*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:389
7205 7288 3 :

['QPDF::damagedPDF(std::__1::basic_string , std::__1::allocator > const&, long long, std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::unique_ptr >::operator->[abi:ne180100]() const', 'QPDF::read_xrefStream(long long, bool)']

7257 72278 QPDF::read_xrefTable(longlong) call site: 00000 /src/qpdf/libqpdf/QPDF_objects.cc:748
7205 7209 2 :

['QPDFObjectHandle::operator=(QPDFObjectHandle&&)', 'QPDFObjectHandle::getDict() const']

7241 43628 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:655
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 21623 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:528
7205 7205 1 :

['QPDF::Resolver::resolved(QPDF*, QPDFObjGen)']

7205 7207 qpdf::BaseHandle::type_code()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:476
7205 7205 1 :

['QPDF::Resolver::resolved(QPDF*, QPDFObjGen)']

7205 7207 QPDFObject::getResolvedTypeCode()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:516
7205 7205 1 :

['QPDF::getAllPages()']

7205 7205 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:522

Runtime coverage analysis

Covered functions
415
Functions that are reachable but not covered
715
Reachable functions
1396
Percentage of reachable functions covered
48.78%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/json_fuzzer.cc 4
/src/qpdf/libqpdf/JSON.cc 28
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/libqpdf/QUtil.cc 12
/src/qpdf/include/qpdf/QIntC.hh 37
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/include/qpdf/JSON.hh 7
/src/qpdf/libqpdf/QPDF.cc 23
/src/qpdf/libqpdf/QPDFTokenizer.cc 34
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/QPDF_json.cc 5
/src/qpdf/libqpdf/QPDF_objects.cc 47
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 10
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 61
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 48
/src/qpdf/libqpdf/QPDF_Array.cc 18
/src/qpdf/libqpdf/QPDFObjectHandle.cc 69
/src/qpdf/libqpdf/QPDFXRefEntry.cc 3
/src/qpdf/libqpdf/QPDF_Dictionary.cc 12
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_Discard.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 12
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Flate.cc 1
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 3
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2

Fuzzer: future_qpdf_pages_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 911 17.6%
gold [1:9] 133 2.56%
yellow [10:29] 81 1.56%
greenyellow [30:49] 44 0.85%
lawngreen 50+ 4007 77.4%
All colors 5176 100

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
1924 2139 12 :

['std::logic_error::logic_error(char const*)', '(anonymous namespace)::JSONParser::tokenError()', 'qpdf::util::hex_decode_char(char)', '(anonymous namespace)::JSONParser::append()', 'std::__1::basic_string , std::__1::allocator >::operator+=[abi:ne180100](char)', '(anonymous namespace)::JSONParser::ignore((anonymous namespace)::JSONParser::lex_state_e)', 'std::__1::basic_string , std::__1::allocator >::empty[abi:ne180100]() const', '(anonymous namespace)::JSONParser::append((anonymous namespace)::JSONParser::lex_state_e)', '(anonymous namespace)::JSONParser::ignore()', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100](char const*, unsigned long)', '(anonymous namespace)::JSONParser::handle_u_code(unsigned long, long long, unsigned long&, long long&, std::__1::basic_string , std::__1::allocator >&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)']

1966 2201 (anonymousnamespace)::JSONParser::getToken() call site: 00000 /src/qpdf/libqpdf/JSON.cc:949
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 00000 /src/zlib/inflate.c:817
108 108 1 :

['deflateInit_']

521 1005 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:151
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51
21 21 1 :

['deflateEnd']

39 90 Pl_Flate::finish() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:240
21 21 1 :

['deflateEnd']

23 23 Pl_Flate::Members::~Members() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:57
20 20 1 :

['Pl_RunLength::flush_encode()']

20 24 Pl_RunLength::finish() call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:166
20 20 4 :

['__cxa_free_exception', '__cxa_allocate_exception', 'QPDFExc::QPDFExc(QPDFExc const&)', '__cxa_throw']

20 20 QPDFParser::warn(QPDFExcconst&)const call site: 00000 /src/qpdf/libqpdf/QPDFParser.cc:657
14 7219 2 :

['QPDFObjectHandle::newBool(bool)', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)']

30 7235 QPDFAcroFormDocumentHelper::setNeedAppearances(bool) call site: 00000 /src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc:386
14 14 1 :

['sha384_short']

14 23 sph_sha384 call site: 00000 /src/qpdf/libqpdf/sph/md_helper.c:191
13 13 1 :

['QPDFMatrix::rotatex90(int)']

53 7356 QPDFAnnotationObjectHelper::getPageContentForAppearance(std::__1::basic_string ,std::__1::allocator >const&,int,int,int) call site: 00000 /src/qpdf/libqpdf/QPDFAnnotationObjectHelper.cc:220
11 11 1 :

['std::__1::shared_ptr QPDFObject::create (QPDF_Array const&)']

11 11 qpdf::BaseHandle::copy(bool)const call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:272

Runtime coverage analysis

Covered functions
1223
Functions that are reachable but not covered
209
Reachable functions
2007
Percentage of reachable functions covered
89.59%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_pages_fuzzer.cc 8
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 1
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 2
/src/qpdf/libqpdf/BufferInputSource.cc 3
/src/qpdf/include/qpdf/InputSource.hh 4
/src/qpdf/libqpdf/QPDF.cc 20
/src/qpdf/libqpdf/QPDF_objects.cc 48
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 11
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 48
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 44
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 4
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 28
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 30
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 22
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 71
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 32
/src/qpdf/libqpdf/QPDFObjectHandle.cc 111
/src/qpdf/libqpdf/QPDFXRefEntry.cc 3
/src/qpdf/libqpdf/QPDF_Dictionary.cc 14
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 19
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2
/src/qpdf/libqpdf/QPDFPageDocumentHelper.cc 4
/src/qpdf/include/qpdf/QPDFDocumentHelper.hh 1
/src/qpdf/libqpdf/QPDFPageLabelDocumentHelper.cc 3
/src/qpdf/include/qpdf/QPDFPageLabelDocumentHelper.hh 2
/src/qpdf/libqpdf/QPDFDocumentHelper.cc 1
/src/qpdf/libqpdf/QPDFOutlineDocumentHelper.cc 4
/src/qpdf/include/qpdf/QPDFOutlineDocumentHelper.hh 3
/src/qpdf/include/qpdf/QPDFOutlineObjectHelper.hh 3
/src/qpdf/libqpdf/QPDFOutlineObjectHelper.cc 5
/src/qpdf/include/qpdf/QPDFObjectHelper.hh 6
/src/qpdf/libqpdf/QPDFObjectHelper.cc 1
/src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc 8
/src/qpdf/include/qpdf/QPDFAcroFormDocumentHelper.hh 2
/src/qpdf/libqpdf/QPDFFormFieldObjectHelper.cc 30
/src/qpdf/include/qpdf/QPDFFormFieldObjectHelper.hh 2
/src/qpdf/libqpdf/QPDF_String.cc 6
/src/qpdf/include/qpdf/QPDFPageDocumentHelper.hh 1
/src/qpdf/include/qpdf/QPDFPageObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFPageObjectHelper.cc 9
/src/qpdf/include/qpdf/QPDFAnnotationObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFAnnotationObjectHelper.cc 7
/src/qpdf/libqpdf/Pl_QPDFTokenizer.cc 3
/src/qpdf/libqpdf/QPDFMatrix.cc 11
/src/qpdf/libqpdf/QPDFNumberTreeObjectHelper.cc 7
/src/qpdf/libqpdf/NNTree.cc 29
/src/qpdf/libqpdf/qpdf/NNTree.hh 4
/src/qpdf/include/qpdf/QPDFNumberTreeObjectHelper.hh 1
/src/qpdf/libqpdf/JSON.cc 29
/src/qpdf/libqpdf/qpdf/JSON_writer.hh 8
/src/qpdf/include/qpdf/JSON.hh 5
/src/qpdf/libqpdf/Pl_String.cc 2
/src/qpdf/libqpdf/QPDFNameTreeObjectHelper.cc 7
/src/qpdf/include/qpdf/QPDFNameTreeObjectHelper.hh 1

Fuzzer: future_qpdf_outlines_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 592 17.2%
gold [1:9] 94 2.73%
yellow [10:29] 72 2.09%
greenyellow [30:49] 38 1.10%
lawngreen 50+ 2637 76.8%
All colors 3433 100

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
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 21623 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:528
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7211 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:545
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7209 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:558
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 00000 /src/zlib/inflate.c:817
108 108 1 :

['deflateInit_']

521 1005 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:151
88 173008 18 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::__wrap_iter ::operator*[abi:ne180100]() const', 'QPDFObjectHandle::~QPDFObjectHandle()', 'qpdf::Array::~Array()', 'QPDFObjectHandle::isNameAndEquals(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::__wrap_iter ::operator++[abi:ne180100]()', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::isDictionaryOfType(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::isDictionary() const', 'qpdf::Array::begin()', 'bool std::__1::operator!=[abi:ne180100] (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)', 'qpdf::BaseHandle::size() const', 'QPDFObjectHandle::as_array(qpdf::typed) const', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](char const*)', 'QPDF::EncryptionParameters::interpretCF(QPDFObjectHandle const&) const', 'QPDFObjectHandle::isArray() const', 'qpdf::Array::end()', 'QPDFObjectHandle::isName() const']

88 173398 QPDF::decryptStream(std::__1::shared_ptr ,std::__1::shared_ptr ,QPDF&,Pipeline*&,QPDFObjGen,QPDFObjectHandle&,bool,std::__1::unique_ptr >&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:953
36 28882 16 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::newInteger(long long)', 'Pl_Count::~Pl_Count()', 'QPDFObjGen::unparse(char) const', 'std::__1::to_string(long long)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::StreamDataProvider::supportsRetry()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'Pl_Count::getCount() const', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'QPDFObjectHandle::hasKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::runtime_error::runtime_error(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'Pl_Count::Pl_Count(char const*, Pipeline*)', 'QPDFObjectHandle::getIntValue() const']

60 29511 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:534
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51
21 21 1 :

['deflateEnd']

39 90 Pl_Flate::finish() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:240
21 21 1 :

['deflateEnd']

23 23 Pl_Flate::Members::~Members() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:57
20 20 1 :

['Pl_RunLength::flush_encode()']

20 24 Pl_RunLength::finish() call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:166
20 20 4 :

['__cxa_free_exception', '__cxa_allocate_exception', 'QPDFExc::QPDFExc(QPDFExc const&)', '__cxa_throw']

20 20 QPDFParser::warn(QPDFExcconst&)const call site: 00000 /src/qpdf/libqpdf/QPDFParser.cc:657

Runtime coverage analysis

Covered functions
919
Functions that are reachable but not covered
207
Reachable functions
1528
Percentage of reachable functions covered
86.45%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 7
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 1
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 2
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/libqpdf/QPDF.cc 18
/src/qpdf/libqpdf/QPDF_objects.cc 47
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 11
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 43
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 25
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 68
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 28
/src/qpdf/libqpdf/QPDFObjectHandle.cc 70
/src/qpdf/libqpdf/QPDFXRefEntry.cc 3
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 12
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 3
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2
/src/qpdf/libqpdf/QPDFOutlineDocumentHelper.cc 3
/src/qpdf/include/qpdf/QPDFDocumentHelper.hh 1
/src/qpdf/include/qpdf/QPDFOutlineDocumentHelper.hh 3
/src/qpdf/include/qpdf/QPDFOutlineObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFOutlineObjectHelper.cc 5
/src/qpdf/include/qpdf/QPDFObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFObjectHelper.cc 1
/src/qpdf/libqpdf/QPDFDocumentHelper.cc 1
/src/qpdf/libqpdf/QPDF_String.cc 2
/src/qpdf/libqpdf/QPDFNameTreeObjectHelper.cc 7
/src/qpdf/libqpdf/NNTree.cc 29
/src/qpdf/libqpdf/qpdf/NNTree.hh 4
/src/qpdf/include/qpdf/QPDFNameTreeObjectHelper.hh 1

Fuzzer: qpdf_outlines_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 579 16.8%
gold [1:9] 93 2.70%
yellow [10:29] 51 1.48%
greenyellow [30:49] 48 1.39%
lawngreen 50+ 2664 77.5%
All colors 3435 100

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
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 21623 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:528
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7211 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:545
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7209 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:558
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 00000 /src/zlib/inflate.c:817
108 108 1 :

['deflateInit_']

521 1005 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:151
36 28882 16 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::newInteger(long long)', 'Pl_Count::~Pl_Count()', 'QPDFObjGen::unparse(char) const', 'std::__1::to_string(long long)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::StreamDataProvider::supportsRetry()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'Pl_Count::getCount() const', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'QPDFObjectHandle::hasKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::runtime_error::runtime_error(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'Pl_Count::Pl_Count(char const*, Pipeline*)', 'QPDFObjectHandle::getIntValue() const']

60 29511 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:534
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51
21 21 1 :

['deflateEnd']

39 90 Pl_Flate::finish() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:240
21 21 1 :

['deflateEnd']

23 23 Pl_Flate::Members::~Members() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:57
20 20 1 :

['Pl_RunLength::flush_encode()']

20 24 Pl_RunLength::finish() call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:166
20 20 4 :

['__cxa_free_exception', '__cxa_allocate_exception', 'QPDFExc::QPDFExc(QPDFExc const&)', '__cxa_throw']

20 20 QPDFParser::warn(QPDFExcconst&)const call site: 00000 /src/qpdf/libqpdf/QPDFParser.cc:657
14 14 1 :

['sha384_short']

14 23 sph_sha384 call site: 00000 /src/qpdf/libqpdf/sph/md_helper.c:191

Runtime coverage analysis

Covered functions
919
Functions that are reachable but not covered
207
Reachable functions
1528
Percentage of reachable functions covered
86.45%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 7
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 1
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 2
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QIntC.hh 43
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/libqpdf/QPDF.cc 18
/src/qpdf/libqpdf/QPDF_objects.cc 47
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 11
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 25
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 68
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 28
/src/qpdf/libqpdf/QPDFObjectHandle.cc 70
/src/qpdf/libqpdf/QPDFXRefEntry.cc 3
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 12
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 3
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2
/src/qpdf/libqpdf/QPDFOutlineDocumentHelper.cc 3
/src/qpdf/include/qpdf/QPDFDocumentHelper.hh 1
/src/qpdf/include/qpdf/QPDFOutlineDocumentHelper.hh 3
/src/qpdf/include/qpdf/QPDFOutlineObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFOutlineObjectHelper.cc 5
/src/qpdf/include/qpdf/QPDFObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFObjectHelper.cc 1
/src/qpdf/libqpdf/QPDFDocumentHelper.cc 1
/src/qpdf/libqpdf/QPDF_String.cc 2
/src/qpdf/libqpdf/QPDFNameTreeObjectHelper.cc 7
/src/qpdf/libqpdf/NNTree.cc 29
/src/qpdf/libqpdf/qpdf/NNTree.hh 4
/src/qpdf/include/qpdf/QPDFNameTreeObjectHelper.hh 1

Fuzzer: qpdf_pages_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 921 17.7%
gold [1:9] 142 2.74%
yellow [10:29] 91 1.75%
greenyellow [30:49] 34 0.65%
lawngreen 50+ 3990 77.0%
All colors 5178 100

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
1924 2139 12 :

['std::logic_error::logic_error(char const*)', '(anonymous namespace)::JSONParser::tokenError()', 'qpdf::util::hex_decode_char(char)', '(anonymous namespace)::JSONParser::append()', 'std::__1::basic_string , std::__1::allocator >::operator+=[abi:ne180100](char)', '(anonymous namespace)::JSONParser::ignore((anonymous namespace)::JSONParser::lex_state_e)', 'std::__1::basic_string , std::__1::allocator >::empty[abi:ne180100]() const', '(anonymous namespace)::JSONParser::append((anonymous namespace)::JSONParser::lex_state_e)', '(anonymous namespace)::JSONParser::ignore()', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100](char const*, unsigned long)', '(anonymous namespace)::JSONParser::handle_u_code(unsigned long, long long, unsigned long&, long long&, std::__1::basic_string , std::__1::allocator >&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)']

1966 2201 (anonymousnamespace)::JSONParser::getToken() call site: 00000 /src/qpdf/libqpdf/JSON.cc:949
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 00000 /src/zlib/inflate.c:817
108 108 1 :

['deflateInit_']

521 1005 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:151
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51
21 21 1 :

['deflateEnd']

39 90 Pl_Flate::finish() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:240
21 21 1 :

['deflateEnd']

23 23 Pl_Flate::Members::~Members() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:57
20 20 1 :

['Pl_RunLength::flush_encode()']

20 24 Pl_RunLength::finish() call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:166
20 20 4 :

['__cxa_free_exception', '__cxa_allocate_exception', 'QPDFExc::QPDFExc(QPDFExc const&)', '__cxa_throw']

20 20 QPDFParser::warn(QPDFExcconst&)const call site: 00000 /src/qpdf/libqpdf/QPDFParser.cc:657
14 7219 2 :

['QPDFObjectHandle::newBool(bool)', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)']

30 7235 QPDFAcroFormDocumentHelper::setNeedAppearances(bool) call site: 00000 /src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc:386
14 14 1 :

['sha384_short']

14 23 sph_sha384 call site: 00000 /src/qpdf/libqpdf/sph/md_helper.c:191
11 11 1 :

['std::__1::shared_ptr QPDFObject::create (QPDF_Array const&)']

11 11 qpdf::BaseHandle::copy(bool)const call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:272
10 7338 8 :

['std::__1::shared_ptr ::~shared_ptr[abi:ne180100]()', 'isspace', 'QPDFObjectHandle::getObj()', 'QPDFObjectHandle::~QPDFObjectHandle()', 'QPDF::damagedPDF(long long, std::__1::basic_string , std::__1::allocator > const&)', 'QPDF::readObject(std::__1::basic_string , std::__1::allocator > const&, QPDFObjGen)', 'QPDF::updateCache(QPDFObjGen, std::__1::shared_ptr const&, long long, long long, bool)', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const']

26 22201 QPDF::readObjectAtOffset(bool,longlong,std::__1::basic_string ,std::__1::allocator >const&,QPDFObjGen) call site: 00000 /src/qpdf/libqpdf/QPDF_objects.cc:1488

Runtime coverage analysis

Covered functions
1217
Functions that are reachable but not covered
214
Reachable functions
2007
Percentage of reachable functions covered
89.34%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_pages_fuzzer.cc 8
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 1
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 2
/src/qpdf/libqpdf/BufferInputSource.cc 3
/src/qpdf/include/qpdf/InputSource.hh 4
/src/qpdf/include/qpdf/QIntC.hh 48
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/libqpdf/QPDF.cc 20
/src/qpdf/libqpdf/QPDF_objects.cc 48
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 11
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 44
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 4
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 28
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 30
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 22
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 71
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 32
/src/qpdf/libqpdf/QPDFObjectHandle.cc 111
/src/qpdf/libqpdf/QPDFXRefEntry.cc 3
/src/qpdf/libqpdf/QPDF_Dictionary.cc 14
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 19
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2
/src/qpdf/libqpdf/QPDFPageDocumentHelper.cc 4
/src/qpdf/include/qpdf/QPDFDocumentHelper.hh 1
/src/qpdf/libqpdf/QPDFPageLabelDocumentHelper.cc 3
/src/qpdf/include/qpdf/QPDFPageLabelDocumentHelper.hh 2
/src/qpdf/libqpdf/QPDFDocumentHelper.cc 1
/src/qpdf/libqpdf/QPDFOutlineDocumentHelper.cc 4
/src/qpdf/include/qpdf/QPDFOutlineDocumentHelper.hh 3
/src/qpdf/include/qpdf/QPDFOutlineObjectHelper.hh 3
/src/qpdf/libqpdf/QPDFOutlineObjectHelper.cc 5
/src/qpdf/include/qpdf/QPDFObjectHelper.hh 6
/src/qpdf/libqpdf/QPDFObjectHelper.cc 1
/src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc 8
/src/qpdf/include/qpdf/QPDFAcroFormDocumentHelper.hh 2
/src/qpdf/libqpdf/QPDFFormFieldObjectHelper.cc 30
/src/qpdf/include/qpdf/QPDFFormFieldObjectHelper.hh 2
/src/qpdf/libqpdf/QPDF_String.cc 6
/src/qpdf/include/qpdf/QPDFPageDocumentHelper.hh 1
/src/qpdf/include/qpdf/QPDFPageObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFPageObjectHelper.cc 9
/src/qpdf/include/qpdf/QPDFAnnotationObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFAnnotationObjectHelper.cc 7
/src/qpdf/libqpdf/Pl_QPDFTokenizer.cc 3
/src/qpdf/libqpdf/QPDFMatrix.cc 11
/src/qpdf/libqpdf/QPDFNumberTreeObjectHelper.cc 7
/src/qpdf/libqpdf/NNTree.cc 29
/src/qpdf/libqpdf/qpdf/NNTree.hh 4
/src/qpdf/include/qpdf/QPDFNumberTreeObjectHelper.hh 1
/src/qpdf/libqpdf/JSON.cc 29
/src/qpdf/libqpdf/qpdf/JSON_writer.hh 8
/src/qpdf/include/qpdf/JSON.hh 5
/src/qpdf/libqpdf/Pl_String.cc 2
/src/qpdf/libqpdf/QPDFNameTreeObjectHelper.cc 7
/src/qpdf/include/qpdf/QPDFNameTreeObjectHelper.hh 1

Fuzzer: future_json_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 2363 75.8%
gold [1:9] 25 0.80%
yellow [10:29] 54 1.73%
greenyellow [30:49] 17 0.54%
lawngreen 50+ 658 21.1%
All colors 3117 100

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
108859 508137 61 :

['std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QPDF::EncryptionParameters::initialize(QPDF&)::$_1::operator()(std::__1::basic_string , std::__1::allocator > const&) const', 'qpdf::BaseDictionary::begin()', 'qpdf::BaseDictionary::end()', 'std::__1::operator!=[abi:ne180100](std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> > const&, std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> > const&)', 'QPDFObjectHandle::isDictionary() const', 'std::__1::to_string(int)', 'std::__1::tuple_element<0ul, std::__1::pair , std::__1::allocator > const, QPDFObjectHandle> >::type const& std::__1::get[abi:ne180100]<0ul, std::__1::basic_string , std::__1::allocator > const, QPDFObjectHandle>(std::__1::pair , std::__1::allocator > const, QPDFObjectHandle> const&)', 'QPDFObjectHandle::isInteger() const', 'QPDFObjectHandle::isBool() const', 'QPDF::EncryptionParameters::interpretCF(QPDFObjectHandle const&) const', 'QPDF::EncryptionData::~EncryptionData()', 'QPDFObjectHandle::isName() const', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getIntValue() const', 'QUtil::hex_decode(std::__1::basic_string , std::__1::allocator > const&)', 'QPDF::damagedPDF(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator >::length[abi:ne180100]() const', 'std::__1::bitset<32ul>::bitset[abi:ne180100](unsigned long long)', 'QTC::TC(char const*, char const*, int)', 'QPDFObjectHandle::getBoolValue() const', 'QPDF::warn(QPDFExc const&)', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100]()', 'QPDFExc::~QPDFExc()', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::getIntValueAsInt() const', 'QPDF::damagedPDF(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](std::__1::basic_string , std::__1::allocator >&&)', 'std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> >::operator++[abi:ne180100]()', 'QPDF::EncryptionParameters::initialize(QPDF&)::$_0::operator()(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDF::EncryptionData::EncryptionData(int, int, int, int, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, bool)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'bool std::__1::operator==[abi:ne180100] >(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&)', 'QPDFObjectHandle::isString() const', 'QPDF::EncryptionData::check_user_password(std::__1::basic_string , std::__1::allocator > const&) const', 'qpdf::Dictionary::~Dictionary()', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'QPDFObjectHandle::~QPDFObjectHandle()', 'qpdf::BaseHandle::size() const', 'QPDFObjectHandle::isNull() const', 'bool std::__1::operator==[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator > const&, char const*)', 'QPDF::EncryptionData::recover_encryption_key_with_password(std::__1::basic_string , std::__1::allocator > const&, bool&) const', 'QPDFObjectHandle::as_dictionary(qpdf::typed) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'QPDF::EncryptionData::check_owner_password(std::__1::basic_string , std::__1::allocator >&, std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator >&&)', '__cxa_free_exception', '__cxa_throw', 'std::__1::map , std::__1::allocator >, QPDF::encryption_method_e, std::__1::less , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > const, QPDF::encryption_method_e> > >::operator[](std::__1::basic_string , std::__1::allocator > const&)', '__cxa_allocate_exception', 'pad_short_parameter(std::__1::basic_string , std::__1::allocator >&, unsigned long)', 'std::__1::tuple_element<1ul, std::__1::pair , std::__1::allocator > const, QPDFObjectHandle> >::type const& std::__1::get[abi:ne180100]<1ul, std::__1::basic_string , std::__1::allocator > const, QPDFObjectHandle>(std::__1::pair , std::__1::allocator > const, QPDFObjectHandle> const&)', 'QPDF::getTrimmedUserPassword() const', 'QPDFExc::QPDFExc(qpdf_error_code_e, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, long long, std::__1::basic_string , std::__1::allocator > const&)', 'QPDF::EncryptionParameters::initialize(QPDF&)::$_2::operator()(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator >::operator=(std::__1::basic_string , std::__1::allocator > const&)', 'QPDFObjectHandle::getName() const', 'QPDF::EncryptionData::compute_encryption_key(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> >::operator*[abi:ne180100]() const', 'QPDFObjectHandle::getStringValue() const']

108859 508137 QPDF::EncryptionParameters::initialize(QPDF&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:657
7207 7207 1 :

['QPDF::pushInheritedAttributesToPage()']

7207 7207 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:512
7205 21603 7 :

['bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Reference& std::__1::get[abi:ne180100] (std::__1::variant &)', 'QPDF::Resolver::resolved(QPDF*, QPDFObjGen)', 'qpdf::BaseHandle::BaseHandle(std::__1::shared_ptr const&)', 'bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Dictionary* qpdf::BaseHandle::as () const', 'qpdf::BaseHandle::~BaseHandle()']

7205 21603 QPDF_Dictionary*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:389
7205 21603 7 :

['bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Reference& std::__1::get[abi:ne180100] (std::__1::variant &)', 'QPDF::Resolver::resolved(QPDF*, QPDFObjGen)', 'qpdf::BaseHandle::BaseHandle(std::__1::shared_ptr const&)', 'bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'qpdf::BaseHandle::~BaseHandle()', 'QPDF_Stream* qpdf::BaseHandle::as () const']

7205 21603 QPDF_Stream*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:389
7205 21603 7 :

['bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Reference& std::__1::get[abi:ne180100] (std::__1::variant &)', 'QPDF::Resolver::resolved(QPDF*, QPDFObjGen)', 'qpdf::BaseHandle::BaseHandle(std::__1::shared_ptr const&)', 'bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Integer* qpdf::BaseHandle::as () const', 'qpdf::BaseHandle::~BaseHandle()']

7205 21603 QPDF_Integer*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:389
7205 21603 7 :

['bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Reference& std::__1::get[abi:ne180100] (std::__1::variant &)', 'QPDF::Resolver::resolved(QPDF*, QPDFObjGen)', 'qpdf::BaseHandle::BaseHandle(std::__1::shared_ptr const&)', 'bool std::__1::holds_alternative[abi:ne180100] (std::__1::variant const&)', 'QPDF_Array* qpdf::BaseHandle::as () const', 'qpdf::BaseHandle::~BaseHandle()']

7205 21603 QPDF_Array*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:389
7205 7288 3 :

['QPDF::damagedPDF(std::__1::basic_string , std::__1::allocator > const&, long long, std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::unique_ptr >::operator->[abi:ne180100]() const', 'QPDF::read_xrefStream(long long, bool)']

7257 72278 QPDF::read_xrefTable(longlong) call site: 00000 /src/qpdf/libqpdf/QPDF_objects.cc:748
7205 7209 2 :

['QPDFObjectHandle::operator=(QPDFObjectHandle&&)', 'QPDFObjectHandle::getDict() const']

7241 43628 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:655
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 21623 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:528
7205 7205 1 :

['QPDF::Resolver::resolved(QPDF*, QPDFObjGen)']

7205 7207 qpdf::BaseHandle::type_code()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:476
7205 7205 1 :

['QPDF::Resolver::resolved(QPDF*, QPDFObjGen)']

7205 7207 QPDFObject::getResolvedTypeCode()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:516
7205 7205 1 :

['QPDF::getAllPages()']

7205 7205 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:522

Runtime coverage analysis

Covered functions
417
Functions that are reachable but not covered
715
Reachable functions
1396
Percentage of reachable functions covered
48.78%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/json_fuzzer.cc 4
/src/qpdf/libqpdf/JSON.cc 28
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/libqpdf/QUtil.cc 12
/src/qpdf/include/qpdf/QIntC.hh 37
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/include/qpdf/JSON.hh 7
/src/qpdf/libqpdf/QPDF.cc 23
/src/qpdf/libqpdf/QPDFTokenizer.cc 34
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/QPDF_json.cc 5
/src/qpdf/libqpdf/QPDF_objects.cc 47
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 10
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 61
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 48
/src/qpdf/libqpdf/QPDF_Array.cc 18
/src/qpdf/libqpdf/QPDFObjectHandle.cc 69
/src/qpdf/libqpdf/QPDFXRefEntry.cc 3
/src/qpdf/libqpdf/QPDF_Dictionary.cc 12
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_Discard.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 12
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Flate.cc 1
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 3
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2

Fuzzer: qpdf_crypt_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1021 21.5%
gold [1:9] 137 2.88%
yellow [10:29] 105 2.21%
greenyellow [30:49] 46 0.96%
lawngreen 50+ 3434 72.4%
All colors 4743 100

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
7537 7537 1 :

['QPDFWriter::copyEncryptionParameters(QPDF&)']

22246 44969 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2167
7239 7239 1 :

['QPDFWriter::initializeSpecialStreams()']

14680 37316 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2182
607 1113 4 :

['std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QPDF::EncryptionData::compute_encryption_key(std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'QPDF::EncryptionData::compute_encryption_O_U(char const*, char const*)']

607 1113 QPDF::EncryptionData::compute_parameters(charconst*,charconst*) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:1117
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 03798 /src/zlib/inflate.c:817
71 71 1 :

['QPDFWriter::computeDeterministicIDData()']

79 7801 QPDFWriter::writeTrailer(QPDFWriter::trailer_e,int,bool,longlong,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1301
60 60 1 :

['do_sarray_io']

60 62 access_virt_sarray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:941
42 50576 28 :

['std::__1::basic_string , std::__1::allocator >::c_str[abi:ne180100]() const', 'std::__1::basic_string , std::__1::allocator >::operator+=[abi:ne180100](char const*)', 'QUtil::get_current_time()', 'qpdf::BaseDictionary::begin()', 'qpdf::BaseDictionary::end()', 'std::__1::operator!=[abi:ne180100](std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> > const&, std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> > const&)', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100](char const*, unsigned long)', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100]()', 'std::__1::basic_string , std::__1::allocator >::operator+=[abi:ne180100](std::__1::basic_string , std::__1::allocator > const&)', 'MD5::~MD5()', 'std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> >::operator++[abi:ne180100]()', 'MD5::encodeString(char const*)', 'qpdf::Dictionary::~Dictionary()', 'QPDFObjectHandle::isString() const', 'MD5::MD5()', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'std::runtime_error::runtime_error(char const*)', 'std::__1::to_string(long)', 'QPDFObjectHandle::hasKey(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::as_dictionary(qpdf::typed) const', 'std::logic_error::logic_error(char const*)', '__cxa_free_exception', '__cxa_throw', '__cxa_allocate_exception', 'MD5::digest(unsigned char*)', 'std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> >::operator*[abi:ne180100]() const', 'QPDFObjectHandle::getStringValue() const']

58 57816 QPDFWriter::generateID(bool) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1876
34 28882 16 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::newInteger(long long)', 'Pl_Count::~Pl_Count()', 'QPDFObjGen::unparse(char) const', 'std::__1::to_string(long long)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::StreamDataProvider::supportsRetry()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'Pl_Count::getCount() const', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'QPDFObjectHandle::hasKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::runtime_error::runtime_error(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'Pl_Count::Pl_Count(char const*, Pipeline*)', 'QPDFObjectHandle::getIntValue() const']

58 29511 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:534
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51
28 28 1 :

['do_barray_io']

28 30 access_virt_barray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:1025
21 21 1 :

['crc32']

579 630 deflate call site: 03726 /src/zlib/deflate.c:1160
21 21 1 :

['crc32']

21 21 read_buf call site: 03734 /src/zlib/deflate.c:227

Runtime coverage analysis

Covered functions
1248
Functions that are reachable but not covered
297
Reachable functions
1952
Percentage of reachable functions covered
84.78%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_crypt_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 53
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 28
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 22
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 67
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 23
/src/qpdf/libqpdf/QPDFObjectHandle.cc 79
/src/qpdf/libqpdf/QPDFXRefEntry.cc 4
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 20
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 51
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 81
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: qpdf_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1486 31.6%
gold [1:9] 122 2.60%
yellow [10:29] 66 1.40%
greenyellow [30:49] 65 1.38%
lawngreen 50+ 2953 62.9%
All colors 4692 100

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
10758 10758 1 :

['QPDFWriter::writeLinearized()']

10760 10802 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2273
7537 7537 1 :

['QPDFWriter::copyEncryptionParameters(QPDF&)']

15007 44969 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2167
7373 7373 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7648 34927 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3038
7222 7224 9 :

['std::__1::vector >::begin[abi:ne180100]()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'std::__1::vector >::end[abi:ne180100]()', 'std::__1::vector >::~vector[abi:ne180100]()', 'QTC::TC(char const*, char const*, int)', 'std::__1::__wrap_iter ::operator*[abi:ne180100]() const', 'QPDF::getAllObjects()', 'std::__1::__wrap_iter ::operator++[abi:ne180100]()', 'bool std::__1::operator!=[abi:ne180100] (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)']

7266 72214 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2940
1117 1117 3 :

['std::__1::basic_string , std::__1::allocator > qpdf::pl::pipe (std::__1::basic_string_view >, Pl_Flate::action_e&&)', 'std::__1::basic_string , std::__1::allocator > qpdf::pl::pipe (std::__1::basic_string_view >, Pl_PNGFilter::action_e&&, unsigned int&)', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](std::__1::basic_string , std::__1::allocator >&&)']

1117 9915 QPDFWriter::writeXRefStream(int,int,longlong,QPDFWriter::trailer_e,int,int,int,longlong,int,longlong,longlong,bool,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2543
991 991 2 :

['std::__1::basic_string , std::__1::allocator > qpdf::pl::pipe (std::__1::basic_string_view >, Pl_Flate::action_e&&)', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](std::__1::basic_string , std::__1::allocator >&&)']

1007 31566 QPDFWriter::writeObjectStream(QPDFObjectHandle) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1769
259 259 1 :

['QPDFWriter::writeEncryptionDictionary()']

259 18316 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3052
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 03746 /src/zlib/inflate.c:817
108 108 1 :

['deflateInit_']

521 1005 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:151
60 60 1 :

['do_sarray_io']

60 62 access_virt_sarray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:941
34 28882 16 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::newInteger(long long)', 'Pl_Count::~Pl_Count()', 'QPDFObjGen::unparse(char) const', 'std::__1::to_string(long long)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::StreamDataProvider::supportsRetry()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'Pl_Count::getCount() const', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'QPDFObjectHandle::hasKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::runtime_error::runtime_error(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'Pl_Count::Pl_Count(char const*, Pipeline*)', 'QPDFObjectHandle::getIntValue() const']

56 29511 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:534
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51

Runtime coverage analysis

Covered functions
1195
Functions that are reachable but not covered
391
Reachable functions
1932
Percentage of reachable functions covered
79.76%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 53
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 28
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 21
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 67
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 23
/src/qpdf/libqpdf/QPDFObjectHandle.cc 79
/src/qpdf/libqpdf/QPDFXRefEntry.cc 4
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 20
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 45
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 78
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: future_qpdf_crypt_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1022 21.5%
gold [1:9] 139 2.93%
yellow [10:29] 98 2.06%
greenyellow [30:49] 61 1.28%
lawngreen 50+ 3421 72.1%
All colors 4741 100

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
7537 7537 1 :

['QPDFWriter::copyEncryptionParameters(QPDF&)']

22246 44969 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2167
7239 7239 1 :

['QPDFWriter::initializeSpecialStreams()']

14680 37316 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2182
607 1113 4 :

['std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QPDF::EncryptionData::compute_encryption_key(std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'QPDF::EncryptionData::compute_encryption_O_U(char const*, char const*)']

607 1113 QPDF::EncryptionData::compute_parameters(charconst*,charconst*) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:1117
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 03796 /src/zlib/inflate.c:817
71 71 1 :

['QPDFWriter::computeDeterministicIDData()']

79 7801 QPDFWriter::writeTrailer(QPDFWriter::trailer_e,int,bool,longlong,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1301
42 50576 28 :

['std::__1::basic_string , std::__1::allocator >::c_str[abi:ne180100]() const', 'std::__1::basic_string , std::__1::allocator >::operator+=[abi:ne180100](char const*)', 'QUtil::get_current_time()', 'qpdf::BaseDictionary::begin()', 'qpdf::BaseDictionary::end()', 'std::__1::operator!=[abi:ne180100](std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> > const&, std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> > const&)', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100](char const*, unsigned long)', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100]()', 'std::__1::basic_string , std::__1::allocator >::operator+=[abi:ne180100](std::__1::basic_string , std::__1::allocator > const&)', 'MD5::~MD5()', 'std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> >::operator++[abi:ne180100]()', 'MD5::encodeString(char const*)', 'qpdf::Dictionary::~Dictionary()', 'QPDFObjectHandle::isString() const', 'MD5::MD5()', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'std::runtime_error::runtime_error(char const*)', 'std::__1::to_string(long)', 'QPDFObjectHandle::hasKey(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::as_dictionary(qpdf::typed) const', 'std::logic_error::logic_error(char const*)', '__cxa_free_exception', '__cxa_throw', '__cxa_allocate_exception', 'MD5::digest(unsigned char*)', 'std::__1::__map_iterator , std::__1::allocator >, QPDFObjectHandle>, std::__1::__tree_node , std::__1::allocator >, QPDFObjectHandle>, void*>*, long> >::operator*[abi:ne180100]() const', 'QPDFObjectHandle::getStringValue() const']

58 57816 QPDFWriter::generateID(bool) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1876
34 28882 16 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::newInteger(long long)', 'Pl_Count::~Pl_Count()', 'QPDFObjGen::unparse(char) const', 'std::__1::to_string(long long)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::StreamDataProvider::supportsRetry()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'Pl_Count::getCount() const', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'QPDFObjectHandle::hasKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::runtime_error::runtime_error(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'Pl_Count::Pl_Count(char const*, Pipeline*)', 'QPDFObjectHandle::getIntValue() const']

58 29511 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:534
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51
28 28 1 :

['do_barray_io']

28 30 access_virt_barray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:1025
21 21 1 :

['crc32']

579 630 deflate call site: 03724 /src/zlib/deflate.c:1160
21 21 1 :

['crc32']

21 21 read_buf call site: 03732 /src/zlib/deflate.c:227
20 20 1 :

['Pl_RunLength::flush_encode()']

20 24 Pl_RunLength::finish() call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:166

Runtime coverage analysis

Covered functions
1250
Functions that are reachable but not covered
297
Reachable functions
1952
Percentage of reachable functions covered
84.78%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_crypt_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 53
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 28
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 22
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 67
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 23
/src/qpdf/libqpdf/QPDFObjectHandle.cc 79
/src/qpdf/libqpdf/QPDFXRefEntry.cc 4
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 20
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 51
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 81
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: future_qpdf_lin_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1081 23.0%
gold [1:9] 123 2.62%
yellow [10:29] 85 1.81%
greenyellow [30:49] 66 1.40%
lawngreen 50+ 3336 71.1%
All colors 4691 100

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
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 21623 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:528
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7211 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:545
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7209 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:558
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 03745 /src/zlib/inflate.c:817
88 173008 18 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::__wrap_iter ::operator*[abi:ne180100]() const', 'QPDFObjectHandle::~QPDFObjectHandle()', 'qpdf::Array::~Array()', 'QPDFObjectHandle::isNameAndEquals(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::__wrap_iter ::operator++[abi:ne180100]()', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::isDictionaryOfType(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::isDictionary() const', 'qpdf::Array::begin()', 'bool std::__1::operator!=[abi:ne180100] (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)', 'qpdf::BaseHandle::size() const', 'QPDFObjectHandle::as_array(qpdf::typed) const', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](char const*)', 'QPDF::EncryptionParameters::interpretCF(QPDFObjectHandle const&) const', 'QPDFObjectHandle::isArray() const', 'qpdf::Array::end()', 'QPDFObjectHandle::isName() const']

88 173398 QPDF::decryptStream(std::__1::shared_ptr ,std::__1::shared_ptr ,QPDF&,Pipeline*&,QPDFObjGen,QPDFObjectHandle&,bool,std::__1::unique_ptr >&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:953
60 60 1 :

['do_sarray_io']

60 62 access_virt_sarray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:941
34 28882 16 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::newInteger(long long)', 'Pl_Count::~Pl_Count()', 'QPDFObjGen::unparse(char) const', 'std::__1::to_string(long long)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::StreamDataProvider::supportsRetry()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'Pl_Count::getCount() const', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'QPDFObjectHandle::hasKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::runtime_error::runtime_error(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'Pl_Count::Pl_Count(char const*, Pipeline*)', 'QPDFObjectHandle::getIntValue() const']

58 29511 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:534
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51
28 28 1 :

['do_barray_io']

28 30 access_virt_barray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:1025
21 21 1 :

['crc32']

579 630 deflate call site: 03673 /src/zlib/deflate.c:1160
21 21 1 :

['crc32']

21 21 read_buf call site: 03681 /src/zlib/deflate.c:227
20 20 1 :

['Pl_RunLength::flush_encode()']

20 24 Pl_RunLength::finish() call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:166

Runtime coverage analysis

Covered functions
1248
Functions that are reachable but not covered
293
Reachable functions
1934
Percentage of reachable functions covered
84.85%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_lin_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 53
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 28
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 21
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 67
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 23
/src/qpdf/libqpdf/QPDFObjectHandle.cc 79
/src/qpdf/libqpdf/QPDFXRefEntry.cc 4
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 20
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 45
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 79
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: future_qpdf_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1491 31.7%
gold [1:9] 124 2.64%
yellow [10:29] 106 2.26%
greenyellow [30:49] 56 1.19%
lawngreen 50+ 2913 62.1%
All colors 4690 100

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
10758 10758 1 :

['QPDFWriter::writeLinearized()']

10760 10802 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2273
7537 7537 1 :

['QPDFWriter::copyEncryptionParameters(QPDF&)']

15007 44969 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2167
7373 7373 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7648 34927 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3038
7222 7224 9 :

['std::__1::vector >::begin[abi:ne180100]()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'std::__1::vector >::end[abi:ne180100]()', 'std::__1::vector >::~vector[abi:ne180100]()', 'QTC::TC(char const*, char const*, int)', 'std::__1::__wrap_iter ::operator*[abi:ne180100]() const', 'QPDF::getAllObjects()', 'std::__1::__wrap_iter ::operator++[abi:ne180100]()', 'bool std::__1::operator!=[abi:ne180100] (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)']

7266 72214 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2940
1117 1117 3 :

['std::__1::basic_string , std::__1::allocator > qpdf::pl::pipe (std::__1::basic_string_view >, Pl_Flate::action_e&&)', 'std::__1::basic_string , std::__1::allocator > qpdf::pl::pipe (std::__1::basic_string_view >, Pl_PNGFilter::action_e&&, unsigned int&)', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](std::__1::basic_string , std::__1::allocator >&&)']

1117 9915 QPDFWriter::writeXRefStream(int,int,longlong,QPDFWriter::trailer_e,int,int,int,longlong,int,longlong,longlong,bool,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2543
991 991 2 :

['std::__1::basic_string , std::__1::allocator > qpdf::pl::pipe (std::__1::basic_string_view >, Pl_Flate::action_e&&)', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](std::__1::basic_string , std::__1::allocator >&&)']

1007 31566 QPDFWriter::writeObjectStream(QPDFObjectHandle) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1769
259 259 1 :

['QPDFWriter::writeEncryptionDictionary()']

259 18316 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3052
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 03744 /src/zlib/inflate.c:817
108 108 1 :

['deflateInit_']

521 1005 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:151
60 60 1 :

['do_sarray_io']

60 62 access_virt_sarray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:941
34 28882 16 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::newInteger(long long)', 'Pl_Count::~Pl_Count()', 'QPDFObjGen::unparse(char) const', 'std::__1::to_string(long long)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::StreamDataProvider::supportsRetry()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'Pl_Count::getCount() const', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'QPDFObjectHandle::hasKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::runtime_error::runtime_error(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'Pl_Count::Pl_Count(char const*, Pipeline*)', 'QPDFObjectHandle::getIntValue() const']

56 29511 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:534
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51

Runtime coverage analysis

Covered functions
1198
Functions that are reachable but not covered
395
Reachable functions
1932
Percentage of reachable functions covered
79.55%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 53
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 28
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 21
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 67
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 23
/src/qpdf/libqpdf/QPDFObjectHandle.cc 79
/src/qpdf/libqpdf/QPDFXRefEntry.cc 4
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 20
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 45
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 78
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: future_qpdf_crypt_insecure_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1689 35.6%
gold [1:9] 137 2.88%
yellow [10:29] 95 2.00%
greenyellow [30:49] 56 1.18%
lawngreen 50+ 2764 58.2%
All colors 4741 100

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
10758 10758 1 :

['QPDFWriter::writeLinearized()']

10760 10802 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2273
9214 9214 1 :

['QPDFWriter::writeObjectStream(QPDFObjectHandle)']

9222 9226 QPDFWriter::writeObject(QPDFObjectHandle,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1809
7537 7537 1 :

['QPDFWriter::copyEncryptionParameters(QPDF&)']

29707 44969 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2167
7373 7373 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7389 34927 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3038
7239 7239 1 :

['QPDFWriter::initializeSpecialStreams()']

22141 37316 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2182
7222 7224 9 :

['std::__1::vector >::begin[abi:ne180100]()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'std::__1::vector >::end[abi:ne180100]()', 'std::__1::vector >::~vector[abi:ne180100]()', 'QTC::TC(char const*, char const*, int)', 'std::__1::__wrap_iter ::operator*[abi:ne180100]() const', 'QPDF::getAllObjects()', 'std::__1::__wrap_iter ::operator++[abi:ne180100]()', 'bool std::__1::operator!=[abi:ne180100] (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)']

7266 72214 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2940
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 21623 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:528
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7211 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:545
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7209 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:558
407 407 1 :

['QPDF::EncryptionData::compute_encryption_parameters_V5(char const*, char const*)']

407 407 QPDF::EncryptionData::compute_parameters(charconst*,charconst*) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:1117
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 03796 /src/zlib/inflate.c:817
60 60 1 :

['do_sarray_io']

60 62 access_virt_sarray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:941

Runtime coverage analysis

Covered functions
1171
Functions that are reachable but not covered
438
Reachable functions
1952
Percentage of reachable functions covered
77.56%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 53
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 28
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 22
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 67
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 23
/src/qpdf/libqpdf/QPDFObjectHandle.cc 79
/src/qpdf/libqpdf/QPDFXRefEntry.cc 4
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 20
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 51
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 81
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: qpdf_lin_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1083 23.0%
gold [1:9] 114 2.42%
yellow [10:29] 122 2.59%
greenyellow [30:49] 56 1.19%
lawngreen 50+ 3318 70.7%
All colors 4693 100

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
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 21623 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:528
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7211 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:545
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7209 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:558
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 03747 /src/zlib/inflate.c:817
88 173008 18 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::__wrap_iter ::operator*[abi:ne180100]() const', 'QPDFObjectHandle::~QPDFObjectHandle()', 'qpdf::Array::~Array()', 'QPDFObjectHandle::isNameAndEquals(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::__wrap_iter ::operator++[abi:ne180100]()', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::isDictionaryOfType(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::isDictionary() const', 'qpdf::Array::begin()', 'bool std::__1::operator!=[abi:ne180100] (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)', 'qpdf::BaseHandle::size() const', 'QPDFObjectHandle::as_array(qpdf::typed) const', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](char const*)', 'QPDF::EncryptionParameters::interpretCF(QPDFObjectHandle const&) const', 'QPDFObjectHandle::isArray() const', 'qpdf::Array::end()', 'QPDFObjectHandle::isName() const']

88 173398 QPDF::decryptStream(std::__1::shared_ptr ,std::__1::shared_ptr ,QPDF&,Pipeline*&,QPDFObjGen,QPDFObjectHandle&,bool,std::__1::unique_ptr >&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:953
60 60 1 :

['do_sarray_io']

60 62 access_virt_sarray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:941
34 28882 16 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(char const*, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::newInteger(long long)', 'Pl_Count::~Pl_Count()', 'QPDFObjGen::unparse(char) const', 'std::__1::to_string(long long)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator >&&)', 'QPDFObjectHandle::StreamDataProvider::supportsRetry()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'Pl_Count::getCount() const', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'QPDFObjectHandle::hasKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::runtime_error::runtime_error(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'Pl_Count::Pl_Count(char const*, Pipeline*)', 'QPDFObjectHandle::getIntValue() const']

58 29511 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:534
29 29 1 :

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

29 29 Pl_RunLength::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:51
28 28 1 :

['do_barray_io']

28 30 access_virt_barray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:1025
21 21 1 :

['crc32']

579 630 deflate call site: 03675 /src/zlib/deflate.c:1160
21 21 1 :

['crc32']

21 21 read_buf call site: 03683 /src/zlib/deflate.c:227
20 20 1 :

['Pl_RunLength::flush_encode()']

20 24 Pl_RunLength::finish() call site: 00000 /src/qpdf/libqpdf/Pl_RunLength.cc:166

Runtime coverage analysis

Covered functions
1246
Functions that are reachable but not covered
289
Reachable functions
1934
Percentage of reachable functions covered
85.06%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_lin_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 53
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 28
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 21
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 67
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 23
/src/qpdf/libqpdf/QPDFObjectHandle.cc 79
/src/qpdf/libqpdf/QPDFXRefEntry.cc 4
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 20
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 45
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 79
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: qpdf_crypt_insecure_fuzzer

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1695 35.7%
gold [1:9] 97 2.04%
yellow [10:29] 99 2.08%
greenyellow [30:49] 55 1.15%
lawngreen 50+ 2797 58.9%
All colors 4743 100

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
10758 10758 1 :

['QPDFWriter::writeLinearized()']

10760 10802 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2273
9214 9214 1 :

['QPDFWriter::writeObjectStream(QPDFObjectHandle)']

9222 9226 QPDFWriter::writeObject(QPDFObjectHandle,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1809
7537 7537 1 :

['QPDFWriter::copyEncryptionParameters(QPDF&)']

29707 44969 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2167
7373 7373 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7389 34927 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3038
7239 7239 1 :

['QPDFWriter::initializeSpecialStreams()']

22141 37316 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2182
7222 7224 9 :

['std::__1::vector >::begin[abi:ne180100]()', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'std::__1::vector >::end[abi:ne180100]()', 'std::__1::vector >::~vector[abi:ne180100]()', 'QTC::TC(char const*, char const*, int)', 'std::__1::__wrap_iter ::operator*[abi:ne180100]() const', 'QPDF::getAllObjects()', 'std::__1::__wrap_iter ::operator++[abi:ne180100]()', 'bool std::__1::operator!=[abi:ne180100] (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)']

7266 72214 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2940
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 21623 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:528
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7211 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:545
7205 7205 1 :

['QPDFObjectHandle::assertType(char const*, bool) const']

7205 7209 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:558
407 407 1 :

['QPDF::EncryptionData::compute_encryption_parameters_V5(char const*, char const*)']

407 407 QPDF::EncryptionData::compute_parameters(charconst*,charconst*) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:1117
252 474 6 :

['inflate_fast', 'adler32', 'fixedtables', 'crc32', 'inflate_table', 'updatewindow']

252 474 inflate call site: 03798 /src/zlib/inflate.c:817
60 60 1 :

['do_sarray_io']

60 62 access_virt_sarray call site: 00000 /src/libjpeg-turbo/src/jmemmgr.c:941

Runtime coverage analysis

Covered functions
1166
Functions that are reachable but not covered
438
Reachable functions
1952
Percentage of reachable functions covered
77.56%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 53
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 28
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 22
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 9
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 67
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 23
/src/qpdf/libqpdf/QPDFObjectHandle.cc 79
/src/qpdf/libqpdf/QPDFXRefEntry.cc 4
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 20
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 51
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 81
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Analyses and suggestions

Optimal target analysis

Remaining optimal interesting functions

The following table shows a list of functions that are optimal targets. Optimal targets are identified by finding the functions that in combination, yield a high code coverage.

Func name Functions filename Arg count Args Function depth hitcount instr count bb count cyclomatic complexity Reachable functions Incoming references total cyclomatic complexity Unreached complexity
QPDFPageObjectHelper::flattenRotation(QPDFAcroFormDocumentHelper*) /src/qpdf/libqpdf/QPDFPageObjectHelper.cc 2 ['N/A', 'N/A'] 36 0 1120 192 142 1715 0 10740 1442
QPDF::showLinearizationData() /src/qpdf/libqpdf/QPDF_linearization.cc 1 ['N/A'] 31 0 94 17 12 1420 0 8883 1437
encode_mcu_huff /src/libjpeg-turbo/src/jchuff.c 2 ['N/A', 'N/A'] 3 0 232 33 14 7 0 595 595
QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) /src/qpdf/libqpdf/QPDF_json.cc 3 ['N/A', 'N/A', 'N/A'] 29 0 1493 301 284 1394 0 7974 538
JSON::checkSchemaInternal(JSON::JSON_value*,JSON::JSON_value*,unsignedlong,std::__1::list ,std::__1::allocator >,std::__1::allocator ,std::__1::allocator >>>&,std::__1::basic_string ,std::__1::allocator >) /src/qpdf/libqpdf/JSON.cc 5 ['N/A', 'N/A', 'size_t', 'N/A', 'N/A'] 2 0 1106 198 164 5 3 332 328
QPDF::writeJSON(int,Pipeline*,qpdf_stream_decode_level_e,qpdf_json_stream_data_e,std::__1::basic_string ,std::__1::allocator >const&,std::__1::set ,std::__1::allocator >,std::__1::less ,std::__1::allocator >>,std::__1::allocator ,std::__1::allocator >>>) /src/qpdf/libqpdf/QPDF_json.cc 7 ['N/A', 'int', 'N/A', 'int', 'int', 'N/A', 'N/A'] 32 0 65 6 6 1411 0 7994 285
(anonymousnamespace)::InlineImageTracker::handleToken(QPDFTokenizer::Tokenconst&) /src/qpdf/libqpdf/QPDFPageObjectHelper.cc 2 ['N/A', 'N/A'] 31 0 380 68 52 1300 0 7583 265

Implementing fuzzers that target the above functions will improve reachability such that it becomes:

Functions statically reachable by fuzzers
54.0%
1688 / 3100
Cyclomatic complexity statically reachable by fuzzers
71.0%
24255 / 34232

All functions overview

If you implement fuzzers for these functions, the status of all functions in the project will be:

Func name Functions filename Args Function call depth Reached by Fuzzers Runtime reached by Fuzzers Combined reached by Fuzzers Fuzzers runtime hit Func lines hit % I Count BB Count Cyclomatic complexity Functions reached Reached by functions Accumulated cyclomatic complexity Undiscovered complexity

Fuzz engine guidance

This sections provides heuristics that can be used as input to a fuzz engine when running a given fuzz target. The current focus is on providing input that is usable by libFuzzer.

/src/qpdf/fuzz/runlength_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['FuzzHelper::doChecks()', 'Pl_RunLength::Pl_RunLength(char const*, Pipeline*, Pl_RunLength::action_e)', 'FuzzHelper::doChecks()', 'FuzzHelper::run()']

/src/qpdf/fuzz/tiffpredictor_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['Pl_TIFFPredictor::Pl_TIFFPredictor(char const*, Pipeline*, Pl_TIFFPredictor::action_e, unsigned int, unsigned int, unsigned int)', 'unsigned int QIntC::to_uint(unsigned long const&)', 'BitStream::getBitsSigned(unsigned long)', 'BitWriter::writeBits(unsigned long long, unsigned long)', 'FuzzHelper::run()', 'Pl_TIFFPredictor::processRow()']

/src/qpdf/fuzz/lzw_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['unsigned int QIntC::to_uint(unsigned long const&)', 'Pl_LZWDecoder::handleCode(unsigned int)', 'Pl_LZWDecoder::handleCode(unsigned int)', 'Pl_LZWDecoder::Pl_LZWDecoder(char const*, Pipeline*, bool)', 'Pl_LZWDecoder::getFirstChar(unsigned int)', 'Pl_LZWDecoder::addToTable(unsigned char)', 'FuzzHelper::run()']

/src/qpdf/fuzz/lzw_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['unsigned int QIntC::to_uint(unsigned long const&)', 'Pl_LZWDecoder::handleCode(unsigned int)', 'Pl_LZWDecoder::handleCode(unsigned int)', 'Pl_LZWDecoder::Pl_LZWDecoder(char const*, Pipeline*, bool)', 'Pl_LZWDecoder::getFirstChar(unsigned int)', 'Pl_LZWDecoder::addToTable(unsigned char)', 'FuzzHelper::run()']

/src/qpdf/fuzz/flate_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['deflate', 'deflateResetKeep', 'unsigned long QIntC::to_size(unsigned int const&)', 'deflateReset', 'Pl_Flate::finish()', 'unsigned long QIntC::to_ulong(unsigned long const&)', 'FuzzHelper::doChecks()', 'Pl_Flate::write(unsigned char const*, unsigned long)']

/src/qpdf/fuzz/flate_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['deflate', 'deflateResetKeep', 'unsigned long QIntC::to_size(unsigned int const&)', 'deflateReset', 'Pl_Flate::finish()', 'unsigned long QIntC::to_ulong(unsigned long const&)', 'FuzzHelper::doChecks()', 'Pl_Flate::write(unsigned char const*, unsigned long)']

/src/qpdf/fuzz/tiffpredictor_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['Pl_TIFFPredictor::Pl_TIFFPredictor(char const*, Pipeline*, Pl_TIFFPredictor::action_e, unsigned int, unsigned int, unsigned int)', 'unsigned int QIntC::to_uint(unsigned long const&)', 'BitStream::getBitsSigned(unsigned long)', 'BitWriter::writeBits(unsigned long long, unsigned long)', 'FuzzHelper::run()', 'Pl_TIFFPredictor::processRow()']

/src/qpdf/fuzz/runlength_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['FuzzHelper::doChecks()', 'Pl_RunLength::Pl_RunLength(char const*, Pipeline*, Pl_RunLength::action_e)', 'FuzzHelper::doChecks()', 'FuzzHelper::run()']

/src/qpdf/fuzz/ascii85_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['Pl_ASCII85Decoder::Pl_ASCII85Decoder(char const*, Pipeline*)', 'FuzzHelper::doChecks()', 'FuzzHelper::run()']

/src/qpdf/fuzz/dct_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['init_simd', 'std_huff_tables', 'unsigned int QIntC::to_uint(int const&)', 'master_selection', 'jinit_memory_mgr', 'jpeg_core_output_dimensions', 'jpeg_calc_output_dimensions', 'Pl_DCT::Pl_DCT(char const*, Pipeline*)', 'Pl_DCT::finish()', 'jinit_color_deconverter']

/src/qpdf/fuzz/pngpredictor_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['Pl_PNGFilter::Pl_PNGFilter(char const*, Pipeline*, Pl_PNGFilter::action_e, unsigned int, unsigned int, unsigned int)', 'Pl_PNGFilter::write(unsigned char const*, unsigned long)', 'FuzzHelper::run()']

/src/qpdf/fuzz/hex_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['Pl_ASCIIHexDecoder::Pl_ASCIIHexDecoder(char const*, Pipeline*)', 'FuzzHelper::doChecks()', 'FuzzHelper::run()']

/src/qpdf/fuzz/pngpredictor_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['Pl_PNGFilter::Pl_PNGFilter(char const*, Pipeline*, Pl_PNGFilter::action_e, unsigned int, unsigned int, unsigned int)', 'Pl_PNGFilter::write(unsigned char const*, unsigned long)', 'FuzzHelper::run()']

/src/qpdf/fuzz/ascii85_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['Pl_ASCII85Decoder::Pl_ASCII85Decoder(char const*, Pipeline*)', 'FuzzHelper::doChecks()', 'FuzzHelper::run()']

/src/qpdf/fuzz/hex_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['Pl_ASCIIHexDecoder::Pl_ASCIIHexDecoder(char const*, Pipeline*)', 'FuzzHelper::doChecks()', 'FuzzHelper::run()']

/src/qpdf/fuzz/dct_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['init_simd', 'std_huff_tables', 'unsigned int QIntC::to_uint(int const&)', 'master_selection', 'jinit_memory_mgr', 'jpeg_core_output_dimensions', 'jpeg_calc_output_dimensions', 'Pl_DCT::Pl_DCT(char const*, Pipeline*)', 'Pl_DCT::finish()', 'jinit_color_deconverter']

/src/qpdf/fuzz/json_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDFObjectHandle::newDictionary(std::__1::map, std::__1::allocator >, QPDFObjectHandle, std::__1::less, std::__1::allocator > >, std::__1::allocator, std::__1::allocator > const, QPDFObjectHandle> > > const&)', 'QUtil::hex_decode(std::__1::basic_string, std::__1::allocator > const&)', 'std::__1::shared_ptr QPDFObject::create, std::__1::allocator >&>(std::__1::basic_string, std::__1::allocator >&)', 'QPDFObjectHandle::parse(QPDF*, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&)', 'QPDF::EncryptionParameters::initialize(QPDF&)', 'QPDFObjectHandle::getIntValueAsInt() const', 'QPDFObject::move_to(std::__1::shared_ptr&, bool)', 'QPDFObjectHandle::removeKey(std::__1::basic_string, std::__1::allocator > const&)', 'QPDFObjectHandle::getName() const', 'QPDF::warn(qpdf_error_code_e, std::__1::basic_string, std::__1::allocator > const&, long long, std::__1::basic_string, std::__1::allocator > const&)']

/src/qpdf/fuzz/qpdf_pages_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['(anonymous namespace)::JSONParser::getToken()', 'QPDF::decryptStream(std::__1::shared_ptr, std::__1::shared_ptr, QPDF&, Pipeline*&, QPDFObjGen, QPDFObjectHandle&, bool, std::__1::unique_ptr >&)', '(anonymous namespace)::JSONParser::handleToken()', '(anonymous namespace)::JSONParser::handleToken()', 'qpdf::Name::normalize(std::__1::basic_string, std::__1::allocator > const&)', 'qpdf::BaseHandle::copy(bool) const', 'QPDFAnnotationObjectHelper::getPageContentForAppearance(std::__1::basic_string, std::__1::allocator > const&, int, int, int)', 'qpdf::Tokenizer::inBeforeToken(char)', '(anonymous namespace)::JSONParser::getToken()', '(anonymous namespace)::JSONParser::getToken()']

/src/qpdf/fuzz/qpdf_outlines_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDF::getAllPagesInternal(QPDFObjectHandle, QPDFObjGen::set&, QPDFObjGen::set&, bool, bool)', 'QPDF::EncryptionParameters::interpretCF(QPDFObjectHandle const&) const', 'qpdf::Stream::pipeStreamData(Pipeline*, bool*, int, qpdf_stream_decode_level_e, bool, bool)', 'QPDFObjectHandle::hasKey(std::__1::basic_string, std::__1::allocator > const&) const', 'qpdf::Tokenizer::inBeforeToken(char)', 'Pl_AES_PDF::flush(bool)', 'unsigned long QIntC::to_size(long const&)', 'QPDF_Dictionary* qpdf::BaseHandle::as() const', 'QPDFObjectHandle::getName() const', 'QPDF::decryptStream(std::__1::shared_ptr, std::__1::shared_ptr, QPDF&, Pipeline*&, QPDFObjGen, QPDFObjectHandle&, bool, std::__1::unique_ptr >&)']

/src/qpdf/fuzz/qpdf_outlines_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDF::getAllPagesInternal(QPDFObjectHandle, QPDFObjGen::set&, QPDFObjGen::set&, bool, bool)', 'QPDF::decryptStream(std::__1::shared_ptr, std::__1::shared_ptr, QPDF&, Pipeline*&, QPDFObjGen, QPDFObjectHandle&, bool, std::__1::unique_ptr >&)', 'qpdf::Stream::pipeStreamData(Pipeline*, bool*, int, qpdf_stream_decode_level_e, bool, bool)', 'QPDFObjectHandle::hasKey(std::__1::basic_string, std::__1::allocator > const&) const', 'qpdf::Tokenizer::inBeforeToken(char)', 'Pl_AES_PDF::flush(bool)', 'long long QIntC::to_offset(unsigned long const&)', 'QPDF_Dictionary* qpdf::BaseHandle::as() const', 'QPDFObjectHandle::getName() const', 'QPDFParser::warn(QPDFExc const&) const']

/src/qpdf/fuzz/qpdf_pages_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['(anonymous namespace)::JSONParser::getToken()', 'QPDF::decryptStream(std::__1::shared_ptr, std::__1::shared_ptr, QPDF&, Pipeline*&, QPDFObjGen, QPDFObjectHandle&, bool, std::__1::unique_ptr >&)', '(anonymous namespace)::JSONParser::handleToken()', '(anonymous namespace)::JSONParser::handleToken()', 'qpdf::Name::normalize(std::__1::basic_string, std::__1::allocator > const&)', 'qpdf::BaseHandle::copy(bool) const', 'void QIntC::range_check_error(long long const&, long long const&)', 'qpdf::Tokenizer::inBeforeToken(char)', '(anonymous namespace)::JSONParser::getToken()', '(anonymous namespace)::JSONParser::getToken()']

/src/qpdf/fuzz/json_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDFObjectHandle::newDictionary(std::__1::map, std::__1::allocator >, QPDFObjectHandle, std::__1::less, std::__1::allocator > >, std::__1::allocator, std::__1::allocator > const, QPDFObjectHandle> > > const&)', 'QUtil::hex_decode(std::__1::basic_string, std::__1::allocator > const&)', 'std::__1::shared_ptr QPDFObject::create, std::__1::allocator >&>(std::__1::basic_string, std::__1::allocator >&)', 'QPDFObjectHandle::parse(QPDF*, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&)', 'QPDF::EncryptionParameters::initialize(QPDF&)', 'QPDFObjectHandle::getIntValueAsInt() const', 'QPDFObject::move_to(std::__1::shared_ptr&, bool)', 'QPDFObjectHandle::removeKey(std::__1::basic_string, std::__1::allocator > const&)', 'QPDFObjectHandle::getName() const', 'QPDF::warn(qpdf_error_code_e, std::__1::basic_string, std::__1::allocator > const&, long long, std::__1::basic_string, std::__1::allocator > const&)']

/src/qpdf/fuzz/qpdf_crypt_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDFWriter::write()', 'QPDFWriter::write()', 'QPDF::getTrailer()', 'qpdf::BaseHandle::copy(bool) const', 'QPDFWriter::writeTrailer(QPDFWriter::trailer_e, int, bool, long long, int)', 'QPDFWriter::writeLinearized()', 'QPDFWriter::setEncryptionParameters(char const*, char const*)', 'QPDFWriter::preserveObjectStreams()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'qpdf::Stream::pipeStreamData(Pipeline*, bool*, int, qpdf_stream_decode_level_e, bool, bool)']

/src/qpdf/fuzz/qpdf_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDFWriter::prepareFileForWrite()', 'QPDFWriter::writeObjectStream(QPDFObjectHandle)', 'Pl_Flate::checkError(char const*, int)', 'QPDFWriter::writeStandard()', 'QPDFWriter::generateID(bool)', 'BitWriter::flush()', 'BitWriter::writeBits(unsigned long long, unsigned long)', 'qpdf::pl::Count::~Count()', 'qpdf::BaseHandle::copy(bool) const', 'unsigned int QIntC::to_uint(unsigned long const&)']

/src/qpdf/fuzz/qpdf_crypt_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDFWriter::write()', 'QPDFWriter::write()', 'QPDF::getTrailer()', 'qpdf::BaseHandle::copy(bool) const', 'QPDFWriter::writeTrailer(QPDFWriter::trailer_e, int, bool, long long, int)', 'QPDFWriter::writeLinearized()', 'QPDFWriter::setEncryptionParameters(char const*, char const*)', 'QPDFWriter::preserveObjectStreams()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'qpdf::Stream::pipeStreamData(Pipeline*, bool*, int, qpdf_stream_decode_level_e, bool, bool)']

/src/qpdf/fuzz/qpdf_lin_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDFWriter::write()', 'QPDFWriter::writeLinearized()', 'ObjTable::large_element(unsigned long)', 'QPDF::EncryptionParameters::interpretCF(QPDFObjectHandle const&) const', 'QPDFWriter::copyEncryptionParameters(QPDF&)', 'Pl_AES_PDF::write(unsigned char const*, unsigned long)', 'qpdf::BaseHandle::copy(bool) const', 'QPDFWriter::unparseObject(QPDFObjectHandle, unsigned long, int, unsigned long, bool)', 'QPDFWriter::writeLinearized()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)']

/src/qpdf/fuzz/qpdf_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDFWriter::prepareFileForWrite()', 'QPDFWriter::writeObjectStream(QPDFObjectHandle)', 'Pl_Flate::checkError(char const*, int)', 'QPDFWriter::writeStandard()', 'QPDFWriter::generateID(bool)', 'BitWriter::flush()', 'BitWriter::writeBits(unsigned long long, unsigned long)', 'qpdf::pl::Count::~Count()', 'qpdf::BaseHandle::copy(bool) const', 'unsigned int QIntC::to_uint(unsigned long const&)']

/src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDFWriter::prepareFileForWrite()', 'ObjTable::large_element(unsigned long)', 'QPDFWriter::writeEncryptionDictionary()', 'QPDFWriter::write()', 'QPDFWriter::writeStandard()', 'QPDFWriter::writeObject(QPDFObjectHandle, int)', 'BitWriter::flush()', 'qpdf::pl::Count::write(unsigned char const*, unsigned long)', 'QPDFWriter::writeObject(QPDFObjectHandle, int)', 'BitWriter::writeBits(unsigned long long, unsigned long)']

/src/qpdf/fuzz/qpdf_lin_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDFWriter::write()', 'QPDFWriter::writeLinearized()', 'ObjTable::large_element(unsigned long)', 'QPDF::EncryptionParameters::interpretCF(QPDFObjectHandle const&) const', 'QPDFWriter::copyEncryptionParameters(QPDF&)', 'qpdf::BaseHandle::copy(bool) const', 'QPDFWriter::unparseObject(QPDFObjectHandle, unsigned long, int, unsigned long, bool)', 'QPDFWriter::writeLinearized()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'qpdf::Stream::pipeStreamData(Pipeline*, bool*, int, qpdf_stream_decode_level_e, bool, bool)']

/src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['QPDFWriter::prepareFileForWrite()', 'ObjTable::large_element(unsigned long)', 'QPDFWriter::writeEncryptionDictionary()', 'QPDFWriter::write()', 'QPDFWriter::writeStandard()', 'QPDFWriter::writeObject(QPDFObjectHandle, int)', 'BitWriter::flush()', 'qpdf::pl::Count::write(unsigned char const*, unsigned long)', 'QPDFWriter::writeObject(QPDFObjectHandle, int)', 'BitWriter::writeBits(unsigned long long, unsigned long)']

Runtime coverage analysis

This section shows analysis of runtime coverage data.

For futher technical details on how this section is generated, please see the Glossary .

Complex functions with low coverage

Func name Function total lines Lines covered at runtime percentage covered Reached by fuzzers
Pl_Flate::checkError(charconst*,int) 35 17 48.57% ['qpdf_outlines_fuzzer', 'future_flate_fuzzer', 'flate_fuzzer', 'future_qpdf_pages_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer']
deflate 257 74 28.79% ['future_flate_fuzzer', 'flate_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
output_pass_setup 45 10 22.22% ['future_dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'dct_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
start_pass 173 39 22.54% ['future_dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'dct_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
ycc_rgb_convert 36 8 22.22% ['future_dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'dct_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
jpeg_resync_to_restart 34 6 17.64% ['future_dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'dct_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
jpeg_core_output_dimensions 130 32 24.61% ['future_dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'dct_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
use_merged_upsample 38 6 15.78% ['future_dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'dct_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
jinit_d_post_controller 39 20 51.28% ['future_dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'dct_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
j12init_d_post_controller 40 20 50.0% ['future_dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'dct_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
access_virt_sarray 59 31 52.54% ['future_dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'dct_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer']
qpdf::BaseHandle::unparse()const 73 16 21.91% ['future_qpdf_pages_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
QPDFWriter::interpretR3EncryptionParameters(bool,bool,bool,bool,bool,bool,qpdf_r3_print_e,qpdf_r3_modify_e) 46 16 34.78% ['qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_fuzzer']

Files and Directories in report

This section shows which files and directories are considered in this report. The main reason for showing this is fuzz introspector may include more code in the reasoning than is desired. This section helps identify if too many files/directories are included, e.g. third party code, which may be irrelevant for the threat model. In the event too much is included, fuzz introspector supports a configuration file that can exclude data from the report. See the following link for more information on how to create a config file: link

Files in report

Source file Reached by Covered by
[] []
/src/qpdf/libqpdf/BitWriter.cc ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/usr/local/bin/../include/c++/v1/string [] []
/src/qpdf/libqpdf/QPDF.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/QPDFFormFieldObjectHelper.hh ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/qpdf/ResourceFinder.hh [] []
/src/qpdf/libqpdf/QPDF_objects.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/QPDFCryptoImpl.hh [] []
/src/libjpeg-turbo/simd/x86_64/jsimd.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/usr/local/bin/../include/c++/v1/__iterator/move_iterator.h [] []
/src/qpdf/libqpdf/Pipeline.cc ['runlength_fuzzer', 'future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'future_flate_fuzzer', 'flate_fuzzer', 'tiffpredictor_fuzzer', 'future_runlength_fuzzer', 'future_ascii85_fuzzer', 'dct_fuzzer', 'pngpredictor_fuzzer', 'hex_fuzzer', 'future_pngpredictor_fuzzer', 'ascii85_fuzzer', 'future_hex_fuzzer', 'future_dct_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['runlength_fuzzer', 'future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'future_flate_fuzzer', 'flate_fuzzer', 'tiffpredictor_fuzzer', 'future_runlength_fuzzer', 'future_ascii85_fuzzer', 'dct_fuzzer', 'pngpredictor_fuzzer', 'hex_fuzzer', 'future_pngpredictor_fuzzer', 'ascii85_fuzzer', 'future_hex_fuzzer', 'future_dct_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_ASCII85Decoder.hh ['future_ascii85_fuzzer', 'ascii85_fuzzer'] []
/src/qpdf/include/qpdf/QPDFObjGen.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/QPDFPageObjectHelper.hh ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/include/qpdf/RandomDataProvider.hh [] []
/src/qpdf/libqpdf/qpdf/Pl_Base64.hh [] []
/src/qpdf/include/qpdf/QPDFXRefEntry.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDFWriter.cc ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/jerror.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/include/qpdf/QPDF.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/QPDFPageDocumentHelper.hh ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/QPDFObject.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jcmainct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/include/qpdf/QPDFObjectHandle.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc ['future_qpdf_crypt_insecure_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_crypt_insecure_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDFPageLabelDocumentHelper.cc ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/libjpeg-turbo/src/jdapimin.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/qpdf/QPDF_private.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDFTokenizer.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDF_encryption.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/QPDFTokenizer.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/OffsetInputSource.cc [] []
/src/qpdf/libqpdf/sha2big.c [] []
/src/qpdf/include/qpdf/QPDFOutlineObjectHelper.hh ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh ['pngpredictor_fuzzer', 'future_pngpredictor_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['pngpredictor_fuzzer', 'future_pngpredictor_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/jcphuff.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/qpdf/AES_PDF_native.hh [] []
/src/libjpeg-turbo/src/jdmaster.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/QUtil.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/jcomapi.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/Pl_PNGFilter.cc ['pngpredictor_fuzzer', 'future_pngpredictor_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['pngpredictor_fuzzer', 'future_pngpredictor_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/qpdf/OffsetInputSource.hh [] []
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/Pl_Buffer.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/QPDFStreamFilter.hh [] []
/src/qpdf/include/qpdf/QPDFObjectHelper.hh ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/zlib/trees.c ['future_flate_fuzzer', 'flate_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_flate_fuzzer', 'flate_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/Pipeline.hh ['runlength_fuzzer', 'future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'future_flate_fuzzer', 'flate_fuzzer', 'tiffpredictor_fuzzer', 'future_runlength_fuzzer', 'future_ascii85_fuzzer', 'dct_fuzzer', 'pngpredictor_fuzzer', 'hex_fuzzer', 'future_pngpredictor_fuzzer', 'ascii85_fuzzer', 'future_hex_fuzzer', 'future_dct_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['runlength_fuzzer', 'future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'future_flate_fuzzer', 'flate_fuzzer', 'tiffpredictor_fuzzer', 'future_runlength_fuzzer', 'future_ascii85_fuzzer', 'dct_fuzzer', 'pngpredictor_fuzzer', 'hex_fuzzer', 'future_pngpredictor_fuzzer', 'ascii85_fuzzer', 'future_hex_fuzzer', 'future_dct_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/jcparam.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/include/qpdf/InputSource.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/fuzz/qpdf_outlines_fuzzer.cc ['future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer'] ['future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer']
/src/qpdf/include/qpdf/QPDFAnnotationObjectHelper.hh ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/Pl_AES_PDF.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDF_String.cc ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/InputSource.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/qpdf/NNTree.hh ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jutils.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/jmemnobs.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jidctred.c [] []
/src/qpdf/libqpdf/MD5.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/zlib/zutil.c [] []
/src/qpdf/include/qpdf/Pl_DCT.hh [] []
/src/qpdf/libqpdf/RC4.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/FileInputSource.cc [] []
/src/libjpeg-turbo/src/wrapper/../jdmainct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/qpdf/Pl_LZWDecoder.hh ['future_lzw_fuzzer', 'lzw_fuzzer'] ['future_lzw_fuzzer', 'lzw_fuzzer']
/src/qpdf/libqpdf/ContentNormalizer.cc [] []
/src/qpdf/libqpdf/QPDFXRefEntry.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/SHA2_native.cc [] []
/src/libjpeg-turbo/src/wrapper/../jquant1.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/usr/local/bin/../include/c++/v1/__exception/exception.h [] []
/usr/local/bin/../include/c++/v1/sstream ['future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'future_flate_fuzzer', 'flate_fuzzer', 'tiffpredictor_fuzzer', 'dct_fuzzer', 'future_dct_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] []
/usr/local/bin/../include/c++/v1/optional [] []
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDF_optimization.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/ObjectHandle.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/Pl_QPDFTokenizer.cc ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/include/qpdf/QPDFSystemError.hh ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] []
/src/qpdf/fuzz/dct_fuzzer.cc ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/fuzz/qpdf_pages_fuzzer.cc ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/QPDFObjectHelper.cc ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jidctflt.c [] []
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jidctint.c [] []
/src/qpdf/libqpdf/QPDFPageObjectHelper.cc ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/fuzz/tiffpredictor_fuzzer.cc ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer'] ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer']
/src/qpdf/libqpdf/qpdf/Util.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/Pl_MD5.cc ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/Pl_Discard.cc ['runlength_fuzzer', 'future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'future_flate_fuzzer', 'flate_fuzzer', 'tiffpredictor_fuzzer', 'future_runlength_fuzzer', 'future_ascii85_fuzzer', 'dct_fuzzer', 'pngpredictor_fuzzer', 'hex_fuzzer', 'future_pngpredictor_fuzzer', 'ascii85_fuzzer', 'future_hex_fuzzer', 'future_dct_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['runlength_fuzzer', 'future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'future_flate_fuzzer', 'flate_fuzzer', 'tiffpredictor_fuzzer', 'future_runlength_fuzzer', 'future_ascii85_fuzzer', 'dct_fuzzer', 'pngpredictor_fuzzer', 'hex_fuzzer', 'future_pngpredictor_fuzzer', 'ascii85_fuzzer', 'future_hex_fuzzer', 'future_dct_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jddctmgr.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/include/qpdf/QPDFExc.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/QIntC.hh ['future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'future_flate_fuzzer', 'flate_fuzzer', 'tiffpredictor_fuzzer', 'dct_fuzzer', 'future_dct_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'future_flate_fuzzer', 'flate_fuzzer', 'tiffpredictor_fuzzer', 'dct_fuzzer', 'future_dct_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDF_Dictionary.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDFStreamFilter.cc [] []
/src/qpdf/libqpdf/MD5_native.cc [] []
/src/zlib/inftrees.c ['future_flate_fuzzer', 'flate_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/QPDFPageLabelDocumentHelper.hh ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/zlib/inflate.c ['future_flate_fuzzer', 'flate_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/Pl_LZWDecoder.cc ['future_lzw_fuzzer', 'lzw_fuzzer'] ['future_lzw_fuzzer', 'lzw_fuzzer']
/src/qpdf/include/qpdf/QPDFAcroFormDocumentHelper.hh ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/QPDFMatrix.cc ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/QPDFFormFieldObjectHelper.cc ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/zlib/crc32.c ['future_flate_fuzzer', 'flate_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] []
/src/libjpeg-turbo/src/wrapper/../jccolor.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/qpdf/Pl_TIFFPredictor.hh ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer'] ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer']
/src/qpdf/libqpdf/PDFVersion.cc [] []
/src/qpdf/libqpdf/rijndael.cc [] []
/src/libjpeg-turbo/src/wrapper/../jdmainct.h [] []
/src/zlib/inffast.c ['future_flate_fuzzer', 'flate_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/BitStream.cc ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer'] ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jclossls.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/QPDF_Stream.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDFNameTreeObjectHelper.cc ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/usr/local/bin/../include/c++/v1/stdexcept ['future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'future_flate_fuzzer', 'flate_fuzzer', 'tiffpredictor_fuzzer', 'dct_fuzzer', 'future_dct_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] []
/src/qpdf/libqpdf/RC4_native.cc [] []
/src/libjpeg-turbo/src/jdhuff.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jcapistd.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/fuzz/qpdf_fuzzer.cc ['qpdf_fuzzer', 'future_qpdf_fuzzer'] ['qpdf_fuzzer', 'future_qpdf_fuzzer']
/src/qpdf/libqpdf/QPDFCrypto_native.cc [] []
/src/qpdf/libqpdf/qpdf/QPDFCrypto_native.hh [] []
/src/qpdf/libqpdf/qpdf/RC4.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] []
/src/qpdf/libqpdf/QPDFParser.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/fuzz/flate_fuzzer.cc ['future_flate_fuzzer', 'flate_fuzzer'] ['future_flate_fuzzer', 'flate_fuzzer']
/src/qpdf/fuzz/qpdf_lin_fuzzer.cc ['future_qpdf_lin_fuzzer', 'qpdf_lin_fuzzer'] ['future_qpdf_lin_fuzzer', 'qpdf_lin_fuzzer']
/src/qpdf/libqpdf/Pl_DCT.cc ['dct_fuzzer', 'future_dct_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/fuzz/runlength_fuzzer.cc ['runlength_fuzzer', 'future_runlength_fuzzer'] ['runlength_fuzzer', 'future_runlength_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jdmerge.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/qpdf/Pl_ASCIIHexDecoder.hh ['hex_fuzzer', 'future_hex_fuzzer'] []
/src/qpdf/libqpdf/QPDFDocumentHelper.cc ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/QPDFLogger.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/fuzz/pngpredictor_fuzzer.cc ['pngpredictor_fuzzer', 'future_pngpredictor_fuzzer'] ['pngpredictor_fuzzer', 'future_pngpredictor_fuzzer']
/src/qpdf/libqpdf/Pl_ASCII85Decoder.cc ['future_ascii85_fuzzer', 'ascii85_fuzzer'] ['future_ascii85_fuzzer', 'ascii85_fuzzer']
/src/libjpeg-turbo/src/jclhuff.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/qpdf/CryptoRandomDataProvider.hh [] []
/src/qpdf/libqpdf/Pl_RunLength.cc ['runlength_fuzzer', 'future_runlength_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['runlength_fuzzer', 'future_runlength_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/jstdhuff.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/qpdf/JSON_writer.hh ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/SF_FlateLzwDecode.cc [] []
/src/qpdf/libqpdf/Pl_Count.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/QPDFDocumentHelper.hh ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/qpdf/bits_functions.hh ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_tiffpredictor_fuzzer', 'tiffpredictor_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/QPDFLogger.hh [] []
/src/qpdf/libqpdf/QPDFNumberTreeObjectHelper.cc ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jcprepct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/zlib/deflate.c ['future_flate_fuzzer', 'flate_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_flate_fuzzer', 'flate_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/Pl_Base64.cc [] []
/src/qpdf/libqpdf/qpdf/ObjTable.hh ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/fuzz/qpdf_crypt_fuzzer.cc ['qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer'] ['qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
/src/libjpeg-turbo/src/jmemmgr.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jcsample.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/wrapper/../jdapistd.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/jdlhuff.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/QPDF_json.cc ['json_fuzzer', 'future_json_fuzzer'] ['json_fuzzer', 'future_json_fuzzer']
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jdcoefct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/jdinput.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jdpostct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/Pl_SHA2.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/jchuff.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/jcapimin.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/wrapper/../jccoefct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/include/qpdf/QPDFNumberTreeObjectHelper.hh ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jquant2.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/fuzz/json_fuzzer.cc ['json_fuzzer', 'future_json_fuzzer'] ['json_fuzzer', 'future_json_fuzzer']
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDFOutlineDocumentHelper.cc ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/src/libjpeg-turbo/src/jcmarker.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/QPDFAnnotationObjectHelper.cc ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc ['hex_fuzzer', 'future_hex_fuzzer'] ['hex_fuzzer', 'future_hex_fuzzer']
/src/qpdf/libqpdf/BufferInputSource.cc ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/zlib/adler32.c ['future_flate_fuzzer', 'flate_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_flate_fuzzer', 'flate_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/JSON.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer']
/src/qpdf/libqpdf/QPDF_linearization.cc ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/Pl_Flate.cc ['future_flate_fuzzer', 'flate_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_flate_fuzzer', 'flate_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/sha2.c [] []
/src/qpdf/fuzz/lzw_fuzzer.cc ['future_lzw_fuzzer', 'lzw_fuzzer'] ['future_lzw_fuzzer', 'lzw_fuzzer']
/src/qpdf/fuzz/hex_fuzzer.cc ['hex_fuzzer', 'future_hex_fuzzer'] ['hex_fuzzer', 'future_hex_fuzzer']
/src/libjpeg-turbo/src/jcmaster.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/jcarith.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/ResourceFinder.cc [] []
/src/qpdf/include/qpdf/QPDFWriter.hh [] []
/src/qpdf/libqpdf/Buffer.cc ['future_lzw_fuzzer', 'lzw_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_lzw_fuzzer', 'lzw_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDF_Array.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/sph/md_helper.c [] []
/src/qpdf/libqpdf/qpdf/SecureRandomDataProvider.hh [] []
/src/libjpeg-turbo/src/wrapper/../jddiffct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/QPDFCryptoProvider.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/qpdf/QPDFParser.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jdcolor.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/qpdf/Pl_MD5.hh [] []
/src/qpdf/libqpdf/sph/sph_types.h [] []
/src/qpdf/libqpdf/QPDFSystemError.cc ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/include/qpdf/QPDFOutlineDocumentHelper.hh ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/AES_PDF_native.cc [] []
/src/libjpeg-turbo/src/wrapper/../jfdctfst.c [] []
/src/libjpeg-turbo/src/jdarith.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/QPDFExc.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDF_pages.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/JSON.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer']
/src/qpdf/libqpdf/QPDFObjectHandle.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/QPDFPageDocumentHelper.cc ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/Pl_OStream.cc ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/usr/local/bin/../include/c++/v1/variant [] []
/src/qpdf/libqpdf/Pl_RC4.cc ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jdsample.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/wrapper/../jfdctint.c [] []
/src/libjpeg-turbo/src/wrapper/../jcdiffct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/fuzz/ascii85_fuzzer.cc ['future_ascii85_fuzzer', 'ascii85_fuzzer'] ['future_ascii85_fuzzer', 'ascii85_fuzzer']
/src/qpdf/libqpdf/Pl_String.cc ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'qpdf_pages_fuzzer']
/src/libjpeg-turbo/src/jdmarker.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/qpdf/InputSource_private.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/Pl_StdioFile.cc [] []
/src/qpdf/include/qpdf/QUtil.hh ['pngpredictor_fuzzer', 'future_pngpredictor_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['pngpredictor_fuzzer', 'future_pngpredictor_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jcdctmgr.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/wrapper/../jdlossls.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/include/qpdf/QTC.hh ['runlength_fuzzer', 'future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'tiffpredictor_fuzzer', 'future_runlength_fuzzer', 'future_ascii85_fuzzer', 'pngpredictor_fuzzer', 'hex_fuzzer', 'future_pngpredictor_fuzzer', 'ascii85_fuzzer', 'future_hex_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_tiffpredictor_fuzzer', 'future_lzw_fuzzer', 'lzw_fuzzer', 'tiffpredictor_fuzzer', 'future_ascii85_fuzzer', 'pngpredictor_fuzzer', 'hex_fuzzer', 'future_pngpredictor_fuzzer', 'ascii85_fuzzer', 'future_hex_fuzzer', 'json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/Pl_Concatenate.cc [] []
/src/qpdf/libqpdf/SecureRandomDataProvider.cc [] []
/src/libjpeg-turbo/src/jcinit.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/qpdf/MD5.hh ['json_fuzzer', 'future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'future_json_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_insecure_fuzzer']
/src/libjpeg-turbo/src/jdphuff.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jidctfst.c [] []
/src/qpdf/libqpdf/NNTree.cc ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/libqpdf/QPDFOutlineObjectHelper.cc ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/src/qpdf/include/qpdf/QPDFNameTreeObjectHelper.hh ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer'] ['future_qpdf_pages_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_outlines_fuzzer', 'qpdf_pages_fuzzer']
/src/libjpeg-turbo/src/jfdctflt.c [] []

Directories in report

Directory
/src/zlib/
/src/qpdf/fuzz/
/src/libjpeg-turbo/src/
/src/libjpeg-turbo/src/wrapper/../
/usr/local/bin/../include/c++/v1/__iterator/
/usr/local/bin/../include/c++/v1/
/usr/local/bin/../include/c++/v1/__exception/
/src/qpdf/include/qpdf/
/src/qpdf/libqpdf/sph/
/src/qpdf/libqpdf/
/src/qpdf/libqpdf/qpdf/
/src/libjpeg-turbo/simd/x86_64/

Metadata section

This sections shows the raw data that is used to produce this report. This is mainly used for further processing and developer debugging.

Fuzzer Calltree file Program data file Coverage file
runlength_fuzzer fuzzerLogFile-0-k34XFkOS7m.data fuzzerLogFile-0-k34XFkOS7m.data.yaml runlength_fuzzer.covreport
future_tiffpredictor_fuzzer fuzzerLogFile-0-bpRnydkL59.data fuzzerLogFile-0-bpRnydkL59.data.yaml future_tiffpredictor_fuzzer.covreport
future_lzw_fuzzer fuzzerLogFile-0-Sq7hGqN2hV.data fuzzerLogFile-0-Sq7hGqN2hV.data.yaml future_lzw_fuzzer.covreport
lzw_fuzzer fuzzerLogFile-0-GkVFxfEcP5.data fuzzerLogFile-0-GkVFxfEcP5.data.yaml lzw_fuzzer.covreport
future_flate_fuzzer fuzzerLogFile-0-h1o8Gesudv.data fuzzerLogFile-0-h1o8Gesudv.data.yaml future_flate_fuzzer.covreport
flate_fuzzer fuzzerLogFile-0-45LB3Z3lH1.data fuzzerLogFile-0-45LB3Z3lH1.data.yaml flate_fuzzer.covreport
tiffpredictor_fuzzer fuzzerLogFile-0-5DTmMr7Hj3.data fuzzerLogFile-0-5DTmMr7Hj3.data.yaml tiffpredictor_fuzzer.covreport
future_runlength_fuzzer fuzzerLogFile-0-CsgQc6x9QT.data fuzzerLogFile-0-CsgQc6x9QT.data.yaml future_runlength_fuzzer.covreport
future_ascii85_fuzzer fuzzerLogFile-0-GUfZ7hApEu.data fuzzerLogFile-0-GUfZ7hApEu.data.yaml future_ascii85_fuzzer.covreport
dct_fuzzer fuzzerLogFile-0-KH3KWzreC1.data fuzzerLogFile-0-KH3KWzreC1.data.yaml dct_fuzzer.covreport
pngpredictor_fuzzer fuzzerLogFile-0-m4GhPQgaej.data fuzzerLogFile-0-m4GhPQgaej.data.yaml pngpredictor_fuzzer.covreport
hex_fuzzer fuzzerLogFile-0-L3j0IaTIvj.data fuzzerLogFile-0-L3j0IaTIvj.data.yaml hex_fuzzer.covreport
future_pngpredictor_fuzzer fuzzerLogFile-0-62uiLSYgS6.data fuzzerLogFile-0-62uiLSYgS6.data.yaml future_pngpredictor_fuzzer.covreport
ascii85_fuzzer fuzzerLogFile-0-H58A8ta4lm.data fuzzerLogFile-0-H58A8ta4lm.data.yaml ascii85_fuzzer.covreport
future_hex_fuzzer fuzzerLogFile-0-mvEMyHQsnq.data fuzzerLogFile-0-mvEMyHQsnq.data.yaml future_hex_fuzzer.covreport
future_dct_fuzzer fuzzerLogFile-0-oO0VAl178e.data fuzzerLogFile-0-oO0VAl178e.data.yaml future_dct_fuzzer.covreport
json_fuzzer fuzzerLogFile-0-RgJEdF8foA.data fuzzerLogFile-0-RgJEdF8foA.data.yaml json_fuzzer.covreport
future_qpdf_pages_fuzzer fuzzerLogFile-0-AC5tbO4D6i.data fuzzerLogFile-0-AC5tbO4D6i.data.yaml future_qpdf_pages_fuzzer.covreport
future_qpdf_outlines_fuzzer fuzzerLogFile-0-9d1bOE53ga.data fuzzerLogFile-0-9d1bOE53ga.data.yaml future_qpdf_outlines_fuzzer.covreport
qpdf_outlines_fuzzer fuzzerLogFile-0-qAzijHo8lF.data fuzzerLogFile-0-qAzijHo8lF.data.yaml qpdf_outlines_fuzzer.covreport
qpdf_pages_fuzzer fuzzerLogFile-0-SmGLwFRFa2.data fuzzerLogFile-0-SmGLwFRFa2.data.yaml qpdf_pages_fuzzer.covreport
future_json_fuzzer fuzzerLogFile-0-T1bZ3f3PNn.data fuzzerLogFile-0-T1bZ3f3PNn.data.yaml future_json_fuzzer.covreport
qpdf_crypt_fuzzer fuzzerLogFile-0-jXX3Tn1LIb.data fuzzerLogFile-0-jXX3Tn1LIb.data.yaml qpdf_crypt_fuzzer.covreport
qpdf_fuzzer fuzzerLogFile-0-02n6xFmDaN.data fuzzerLogFile-0-02n6xFmDaN.data.yaml qpdf_fuzzer.covreport
future_qpdf_crypt_fuzzer fuzzerLogFile-0-GLCWk7Mo2N.data fuzzerLogFile-0-GLCWk7Mo2N.data.yaml future_qpdf_crypt_fuzzer.covreport
future_qpdf_lin_fuzzer fuzzerLogFile-0-nkDnLtNzj8.data fuzzerLogFile-0-nkDnLtNzj8.data.yaml future_qpdf_lin_fuzzer.covreport
future_qpdf_fuzzer fuzzerLogFile-0-dePj3gGJ2R.data fuzzerLogFile-0-dePj3gGJ2R.data.yaml future_qpdf_fuzzer.covreport
future_qpdf_crypt_insecure_fuzzer fuzzerLogFile-0-6pjagLCVu9.data fuzzerLogFile-0-6pjagLCVu9.data.yaml future_qpdf_crypt_insecure_fuzzer.covreport
qpdf_lin_fuzzer fuzzerLogFile-0-9BCHlpcjSt.data fuzzerLogFile-0-9BCHlpcjSt.data.yaml qpdf_lin_fuzzer.covreport
qpdf_crypt_insecure_fuzzer fuzzerLogFile-0-jn1XuoKaQh.data fuzzerLogFile-0-jn1XuoKaQh.data.yaml qpdf_crypt_insecure_fuzzer.covreport