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
ascii85_fuzzer /src/qpdf/fuzz/ascii85_fuzzer.cc 41 26 5 7 127 76 ascii85_fuzzer.cc
tiffpredictor_fuzzer /src/qpdf/fuzz/tiffpredictor_fuzzer.cc 79 36 11 13 258 197 tiffpredictor_fuzzer.cc
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
future_runlength_fuzzer /src/qpdf/fuzz/runlength_fuzzer.cc 53 25 6 6 177 100 runlength_fuzzer.cc
flate_fuzzer /src/qpdf/fuzz/flate_fuzzer.cc 130 415 11 15 2636 1001 flate_fuzzer.cc
future_tiffpredictor_fuzzer /src/qpdf/fuzz/tiffpredictor_fuzzer.cc 79 36 11 13 258 197 tiffpredictor_fuzzer.cc
lzw_fuzzer /src/qpdf/fuzz/lzw_fuzzer.cc 72 41 10 11 267 182 lzw_fuzzer.cc
future_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
dct_fuzzer /src/qpdf/fuzz/dct_fuzzer.cc 249 534 10 55 4045 1719 dct_fuzzer.cc
hex_fuzzer /src/qpdf/fuzz/hex_fuzzer.cc 40 28 5 7 123 77 hex_fuzzer.cc
future_flate_fuzzer /src/qpdf/fuzz/flate_fuzzer.cc 130 415 11 15 2636 1001 flate_fuzzer.cc
future_lzw_fuzzer /src/qpdf/fuzz/lzw_fuzzer.cc 72 41 10 11 267 182 lzw_fuzzer.cc
future_dct_fuzzer /src/qpdf/fuzz/dct_fuzzer.cc 249 534 10 55 4045 1719 dct_fuzzer.cc
pngpredictor_fuzzer /src/qpdf/fuzz/pngpredictor_fuzzer.cc 57 29 8 8 195 142 pngpredictor_fuzzer.cc
future_json_fuzzer /src/qpdf/fuzz/json_fuzzer.cc 1382 2130 40 66 11610 8122 json_fuzzer.cc
qpdf_outlines_fuzzer /src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 1493 2123 40 80 12443 8880 qpdf_outlines_fuzzer.cc
future_qpdf_page_fuzzer /src/qpdf/fuzz/qpdf_page_fuzzer.cc 1983 1924 40 100 18269 13134 qpdf_page_fuzzer.cc
qpdf_page_fuzzer /src/qpdf/fuzz/qpdf_page_fuzzer.cc 1983 1924 40 100 18269 13134 qpdf_page_fuzzer.cc
qpdf_crypt_insecure_fuzzer /src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc 1783 2121 40 82 16290 11172 qpdf_crypt_insecure_fuzzer.cc
qpdf_fuzzer /src/qpdf/fuzz/qpdf_fuzzer.cc 1759 2133 40 82 16085 11047 qpdf_fuzzer.cc
future_qpdf_fuzzer /src/qpdf/fuzz/qpdf_fuzzer.cc 1759 2133 40 82 16085 11047 qpdf_fuzzer.cc
qpdf_crypt_fuzzer /src/qpdf/fuzz/qpdf_crypt_fuzzer.cc 1783 2121 40 82 16293 11173 qpdf_crypt_fuzzer.cc
future_qpdf_crypt_insecure_fuzzer /src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc 1783 2121 40 82 16290 11172 qpdf_crypt_insecure_fuzzer.cc
qpdf_lin_fuzzer /src/qpdf/fuzz/qpdf_lin_fuzzer.cc 1761 2132 40 82 16092 11050 qpdf_lin_fuzzer.cc
future_qpdf_outlines_fuzzer /src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 1493 2123 40 80 12443 8880 qpdf_outlines_fuzzer.cc
json_fuzzer /src/qpdf/fuzz/json_fuzzer.cc 1382 2130 40 66 11610 8122 json_fuzzer.cc
future_qpdf_crypt_fuzzer /src/qpdf/fuzz/qpdf_crypt_fuzzer.cc 1783 2121 40 82 16293 11173 qpdf_crypt_fuzzer.cc
future_qpdf_lin_fuzzer /src/qpdf/fuzz/qpdf_lin_fuzzer.cc 1761 2132 40 82 16092 11050 qpdf_lin_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: 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: 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_throw', '__cxa_allocate_exception', '__cxa_free_exception']

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_throw', '__cxa_allocate_exception', '__cxa_free_exception']

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', '__cxa_allocate_exception', 'std::runtime_error::runtime_error(char const*)', '__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: 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: 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: 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 :

['deflateEnd', 'inflateEnd', '__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()', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100]()', '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*)', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', '__cxa_guard_abort', '__cxa_guard_release']

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

['__cxa_throw', '__cxa_allocate_exception', 'std::runtime_error::runtime_error(char const*)', '__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 :

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

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

['_tr_align', '_tr_stored_block']

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: 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_throw', '__cxa_allocate_exception', '__cxa_free_exception']

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_throw', '__cxa_allocate_exception', '__cxa_free_exception']

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', '__cxa_allocate_exception', 'std::runtime_error::runtime_error(char const*)', '__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: 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] 10 11.6%
yellow [10:29] 0 0.0%
greenyellow [30:49] 7 8.13%
lawngreen 50+ 38 44.1%
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 :

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

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

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

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_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', '__cxa_allocate_exception', 'std::runtime_error::runtime_error(char const*)', '__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: 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 190 54.7%
gold [1:9] 18 5.18%
yellow [10:29] 6 1.72%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 133 38.3%
All colors 347 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 :

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

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

['jpeg_destroy_compress']

17 22 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:216
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: 00048 /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 838 1 :

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

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

['jpeg_mem_term']

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

['Pipeline::next() const']

0 4 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:177
0 0 None 221 728 master_selection call site: 00249 /src/libjpeg-turbo/src/jdmaster.c:539
0 0 None 221 699 master_selection call site: 00250 /src/libjpeg-turbo/src/jdmaster.c:550

Runtime coverage analysis

Covered functions
218
Functions that are reachable but not covered
126
Reachable functions
249
Percentage of reachable functions covered
49.4%
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/qpdf/libqpdf/Pl_Buffer.cc 3
/src/qpdf/libqpdf/Buffer.cc 5
/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: 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_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 :

['deflateEnd', 'inflateEnd', '__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()', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100]()', '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*)', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', '__cxa_guard_abort', '__cxa_guard_release']

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

['__cxa_throw', '__cxa_allocate_exception', 'std::runtime_error::runtime_error(char const*)', '__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 :

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

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

['_tr_align', '_tr_stored_block']

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: 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] 10 11.6%
yellow [10:29] 0 0.0%
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 :

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

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

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

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_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 190 54.7%
gold [1:9] 18 5.18%
yellow [10:29] 6 1.72%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 133 38.3%
All colors 347 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 :

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

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

['jpeg_destroy_compress']

17 22 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:216
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: 00048 /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 838 1 :

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

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

['jpeg_mem_term']

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

['Pipeline::next() const']

0 4 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:177
0 0 None 221 728 master_selection call site: 00249 /src/libjpeg-turbo/src/jdmaster.c:539
0 0 None 221 699 master_selection call site: 00250 /src/libjpeg-turbo/src/jdmaster.c:550

Runtime coverage analysis

Covered functions
218
Functions that are reachable but not covered
126
Reachable functions
249
Percentage of reachable functions covered
49.4%
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/qpdf/libqpdf/Pl_Buffer.cc 3
/src/qpdf/libqpdf/Buffer.cc 5
/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', '__cxa_allocate_exception', 'std::runtime_error::runtime_error(char const*)', '__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: 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 2367 75.5%
gold [1:9] 35 1.11%
yellow [10:29] 46 1.46%
greenyellow [30:49] 19 0.60%
lawngreen 50+ 664 21.2%
All colors 3131 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
109504 502127 63 :

['QPDF::recover_encryption_key_with_password(std::__1::basic_string , std::__1::allocator > const&, QPDF::EncryptionData const&, bool&)', 'std::__1::set , std::__1::allocator >, std::__1::less , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > > >::begin[abi:ne180100]()', 'QPDFObjectHandle::isArray() const', 'QPDF::EncryptionData::~EncryptionData()', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100]()', 'QPDF::compute_encryption_key(std::__1::basic_string , std::__1::allocator > const&, QPDF::EncryptionData const&)', 'bool std::__1::operator==[abi:ne180100] >(std::__1::basic_string , std::__1::allocator > const&, 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 > > >::end[abi:ne180100]()', 'QPDFObjectHandle::getArrayNItems() const', 'QPDFExc::~QPDFExc()', 'QPDFObjectHandle::getBoolValue() const', 'std::__1::operator!=[abi:ne180100](std::__1::__tree_const_iterator , std::__1::allocator >, std::__1::__tree_node , std::__1::allocator >, void*>*, long> const&, std::__1::__tree_const_iterator , std::__1::allocator >, std::__1::__tree_node , std::__1::allocator >, void*>*, long> const&)', '__cxa_allocate_exception', 'std::__1::basic_string , std::__1::allocator >::length[abi:ne180100]() const', 'QPDFObjectHandle::QPDFObjectHandle(QPDFObjectHandle const&)', 'QUtil::hex_decode(std::__1::basic_string , std::__1::allocator > 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&)', 'QPDFObjectHandle::isString() 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::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'QPDF::getTrimmedUserPassword() const', 'std::__1::unique_ptr >::operator->[abi:ne180100]() const', 'pad_short_parameter(std::__1::basic_string , std::__1::allocator >&, unsigned long)', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](std::__1::basic_string , std::__1::allocator >&&)', 'check_owner_password(std::__1::basic_string , std::__1::allocator >&, std::__1::basic_string , std::__1::allocator > const&, QPDF::EncryptionData const&)', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'QPDF::warn(QPDFExc const&)', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::shared_ptr ::shared_ptr[abi:ne180100](std::__1::shared_ptr const&)', 'check_user_password(std::__1::basic_string , std::__1::allocator > const&, QPDF::EncryptionData const&)', 'std::__1::__tree_const_iterator , std::__1::allocator >, std::__1::__tree_node , std::__1::allocator >, void*>*, long>::operator*[abi:ne180100]() const', 'QPDFObjectHandle::isNull() const', 'std::__1::shared_ptr ::~shared_ptr[abi:ne180100]()', 'std::__1::basic_string , std::__1::allocator >::operator=(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'QPDFObjectHandle::getIntValueAsInt() const', 'QPDFObjectHandle::isBool() 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 >&&)', 'bool std::__1::operator==[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator > const&, char const*)', 'QPDFObjectHandle::isName() const', '__cxa_throw', 'QPDFObjectHandle::getStringValue() const', '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&)', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '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::set , std::__1::allocator >, std::__1::less , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > > >::~set[abi:ne180100]()', 'QPDFObjectHandle::isDictionary() const', 'QPDFObjectHandle::getIntValue() const', 'QPDF::damagedPDF(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&)', 'InputSource::getLastOffset() const', 'QPDF::interpretCF(std::__1::shared_ptr , QPDFObjectHandle)', 'std::__1::to_string(int)', 'QTC::TC(char const*, char const*, int)', 'std::__1::__tree_const_iterator , std::__1::allocator >, std::__1::__tree_node , std::__1::allocator >, void*>*, long>::operator++[abi:ne180100]()', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::isInteger() 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&)', '__cxa_free_exception', 'QPDF::damagedPDF(std::__1::basic_string , std::__1::allocator > const&)', 'QPDFObjectHandle::getKeys() const', 'QPDFObjectHandle::getName() const', 'QPDFObjectHandle::~QPDFObjectHandle()']

109504 502127 QPDF::initializeEncryption() call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:730
7117 7117 1 :

['QPDF::pushInheritedAttributesToPage()']

7117 7117 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:521
7115 21333 7 :

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

7115 21333 QPDF_Dictionary*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7115 21333 7 :

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

7115 21333 QPDF_Stream*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7115 21333 7 :

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

7115 21333 QPDF_Integer*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7115 21333 7 :

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

7115 21333 QPDF_Array*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7115 7198 3 :

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

7167 71378 QPDF::read_xrefTable(longlong) call site: 00000 /src/qpdf/libqpdf/QPDF_objects.cc:737
7115 7119 2 :

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

7151 43088 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:667
7115 7115 1 :

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

7115 21353 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:445
7115 7115 1 :

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

7115 7117 qpdf::BaseHandle::type_code()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:393
7115 7115 1 :

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

7115 7117 QPDFObject::getResolvedTypeCode()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:433
7115 7115 1 :

['QPDF::getAllPages()']

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

Runtime coverage analysis

Covered functions
413
Functions that are reachable but not covered
713
Reachable functions
1382
Percentage of reachable functions covered
48.41%
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/BufferInputSource.cc 4
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/libqpdf/Buffer.cc 9
/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/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/libqpdf/QUtil.cc 13
/src/qpdf/include/qpdf/JSON.hh 7
/src/qpdf/libqpdf/QPDF.cc 23
/src/qpdf/libqpdf/QPDFTokenizer.cc 34
/src/qpdf/libqpdf/QPDF_json.cc 5
/src/qpdf/libqpdf/QPDF_objects.cc 43
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 11
/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/libqpdf/qpdf/InputSource_private.hh 8
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/include/qpdf/QPDF.hh 10
/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 56
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 48
/src/qpdf/libqpdf/QPDF_Array.cc 12
/src/qpdf/libqpdf/QPDFObjectHandle.cc 67
/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/Pl_Buffer.cc 5
/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 41
/src/qpdf/libqpdf/MD5.cc 4
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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

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 602 17.5%
gold [1:9] 109 3.16%
yellow [10:29] 65 1.88%
greenyellow [30:49] 41 1.19%
lawngreen 50+ 2623 76.2%
All colors 3440 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
7115 7115 1 :

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

7115 21353 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:445
7115 7115 1 :

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

7115 7121 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:462
7115 7115 1 :

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

7115 7119 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:475
252 474 6 :

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

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 28522 16 :

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

60 29151 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:531
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_throw', '__cxa_allocate_exception', '__cxa_free_exception', 'QPDFExc::QPDFExc(QPDFExc const&)']

20 20 QPDFParser::warn(QPDFExcconst&)const call site: 00000 /src/qpdf/libqpdf/QPDFParser.cc:649
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
891
Functions that are reachable but not covered
206
Reachable functions
1493
Percentage of reachable functions covered
86.2%
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 8
/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 3
/src/qpdf/include/qpdf/QIntC.hh 49
/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 43
/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 8
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 26
/src/qpdf/include/qpdf/QPDF.hh 10
/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 18
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 57
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 21
/src/qpdf/libqpdf/QPDFObjectHandle.cc 69
/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/Pl_Buffer.cc 5
/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 41
/src/qpdf/libqpdf/MD5.cc 4
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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/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 28
/src/qpdf/libqpdf/qpdf/NNTree.hh 4
/src/qpdf/include/qpdf/QPDFNameTreeObjectHelper.hh 1

Fuzzer: future_qpdf_page_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 925 17.7%
gold [1:9] 179 3.43%
yellow [10:29] 54 1.03%
greenyellow [30:49] 73 1.40%
lawngreen 50+ 3975 76.3%
All colors 5206 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
7117 7128 3 :

['QPDFObjectHandle::QPDFObjectHandle(QPDFObjectHandle const&)', 'QPDFObjectHandle::getObjGen() const', 'QPDF::replaceObject(QPDFObjGen, QPDFObjectHandle)']

7173 35996 QPDFPageDocumentHelper::flattenAnnotationsForPage(QPDFPageObjectHelper&,QPDFObjectHandle&,QPDFAcroFormDocumentHelper&,int,int) call site: 00000 /src/qpdf/libqpdf/QPDFPageDocumentHelper.cc:148
1924 2139 12 :

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

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

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

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_throw', '__cxa_allocate_exception', '__cxa_free_exception', 'QPDFExc::QPDFExc(QPDFExc const&)']

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

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

30 7145 QPDFAcroFormDocumentHelper::setNeedAppearances(bool) call site: 00000 /src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc:383
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:315

Runtime coverage analysis

Covered functions
1199
Functions that are reachable but not covered
209
Reachable functions
1983
Percentage of reachable functions covered
89.46%
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_page_fuzzer.cc 8
/src/qpdf/libqpdf/Buffer.cc 9
/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 6
/src/qpdf/include/qpdf/InputSource.hh 4
/src/qpdf/include/qpdf/QIntC.hh 54
/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 44
/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 8
/src/qpdf/libqpdf/qpdf/Util.hh 4
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 29
/src/qpdf/include/qpdf/QPDF.hh 10
/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 24
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 62
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 24
/src/qpdf/libqpdf/QPDFObjectHandle.cc 112
/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/Pl_Buffer.cc 6
/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 41
/src/qpdf/libqpdf/MD5.cc 4
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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 28
/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: qpdf_page_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 916 17.5%
gold [1:9] 107 2.05%
yellow [10:29] 98 1.88%
greenyellow [30:49] 37 0.71%
lawngreen 50+ 4048 77.7%
All colors 5206 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 :

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

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

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

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 163733 11 :

['QPDFObjectHandle::isName() const', 'QPDFObjectHandle::isArray() const', 'QPDFObjectHandle::isDictionaryOfType(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getArrayNItems() const', 'QPDFObjectHandle::isDictionary() const', 'QPDF::interpretCF(std::__1::shared_ptr , QPDFObjectHandle)', 'QPDFObjectHandle::isNameAndEquals(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getArrayItem(int) const', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](char const*)', 'QPDFObjectHandle::~QPDFObjectHandle()', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const']

88 164188 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:1068
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_throw', '__cxa_allocate_exception', '__cxa_free_exception', 'QPDFExc::QPDFExc(QPDFExc const&)']

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

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

30 7145 QPDFAcroFormDocumentHelper::setNeedAppearances(bool) call site: 00000 /src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc:383
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:315

Runtime coverage analysis

Covered functions
1210
Functions that are reachable but not covered
199
Reachable functions
1983
Percentage of reachable functions covered
89.96%
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_page_fuzzer.cc 8
/src/qpdf/libqpdf/Buffer.cc 9
/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 6
/src/qpdf/include/qpdf/InputSource.hh 4
/src/qpdf/include/qpdf/QIntC.hh 54
/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 44
/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 8
/src/qpdf/libqpdf/qpdf/Util.hh 4
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 29
/src/qpdf/include/qpdf/QPDF.hh 10
/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 24
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 62
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 24
/src/qpdf/libqpdf/QPDFObjectHandle.cc 112
/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/Pl_Buffer.cc 6
/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 41
/src/qpdf/libqpdf/MD5.cc 4
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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 28
/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: 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 1587 34.9%
gold [1:9] 142 3.12%
yellow [10:29] 100 2.20%
greenyellow [30:49] 56 1.23%
lawngreen 50+ 2652 58.4%
All colors 4537 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
9639 9639 1 :

['QPDFWriter::writeLinearized()']

9641 9683 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2265
8176 8176 1 :

['QPDFWriter::writeObjectStream(QPDFObjectHandle)']

8184 8188 QPDFWriter::writeObject(QPDFObjectHandle,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1799
7569 7569 1 :

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

22388 44619 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2159
7289 7289 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7305 32249 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3049
7132 7134 9 :

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

7176 71338 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2951
7115 7115 1 :

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

7115 21353 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:445
7115 7115 1 :

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

7115 7121 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:462
7115 7115 1 :

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

7115 7119 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:475
252 474 6 :

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

252 474 inflate call site: 00000 /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
36 49948 28 :

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

52 57098 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1870
34 28522 16 :

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

58 29151 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:531

Runtime coverage analysis

Covered functions
1129
Functions that are reachable but not covered
420
Reachable functions
1783
Percentage of reachable functions covered
76.44%
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 8
/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 3
/src/qpdf/include/qpdf/QIntC.hh 49
/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 49
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 29
/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 8
/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 12
/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 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 64
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 16
/src/qpdf/libqpdf/QPDFObjectHandle.cc 76
/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/Pl_Buffer.cc 5
/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 52
/src/qpdf/libqpdf/MD5.cc 6
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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 9
/src/qpdf/libqpdf/QPDFWriter.cc 65
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 9
/src/qpdf/libqpdf/QPDF_String.cc 3
/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_StdioFile.cc 1
/src/qpdf/libqpdf/Pl_MD5.cc 4
/src/qpdf/include/qpdf/QPDFWriter.hh 1
/src/qpdf/libqpdf/Pl_RC4.cc 1
/src/qpdf/include/qpdf/QUtil.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 1351 30.0%
gold [1:9] 119 2.64%
yellow [10:29] 89 1.98%
greenyellow [30:49] 54 1.20%
lawngreen 50+ 2878 64.0%
All colors 4491 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
9639 9639 1 :

['QPDFWriter::writeLinearized()']

9641 9683 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2265
7569 7569 1 :

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

15017 44619 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2159
7289 7289 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7371 32249 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3049
7132 7134 9 :

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

7176 71338 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2951
252 474 6 :

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

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

['QPDFWriter::writeEncryptionDictionary()']

66 16760 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3063
60 60 1 :

['do_sarray_io']

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

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

56 29151 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:531
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 :

['deflateEnd']

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

Runtime coverage analysis

Covered functions
1155
Functions that are reachable but not covered
347
Reachable functions
1759
Percentage of reachable functions covered
80.27%
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 8
/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 3
/src/qpdf/include/qpdf/QIntC.hh 49
/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 49
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 29
/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 8
/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 12
/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 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 64
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 16
/src/qpdf/libqpdf/QPDFObjectHandle.cc 76
/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/Pl_Buffer.cc 5
/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 6
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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 9
/src/qpdf/libqpdf/QPDFWriter.cc 62
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 9
/src/qpdf/libqpdf/QPDF_String.cc 3
/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_StdioFile.cc 1
/src/qpdf/libqpdf/Pl_MD5.cc 4
/src/qpdf/include/qpdf/QPDFWriter.hh 1
/src/qpdf/libqpdf/Pl_RC4.cc 1
/src/qpdf/include/qpdf/QUtil.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 1348 30.0%
gold [1:9] 134 2.98%
yellow [10:29] 132 2.93%
greenyellow [30:49] 47 1.04%
lawngreen 50+ 2830 63.0%
All colors 4491 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
9639 9639 1 :

['QPDFWriter::writeLinearized()']

9641 9683 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2265
7569 7569 1 :

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

15017 44619 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2159
7289 7289 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7371 32249 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3049
7132 7134 9 :

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

7176 71338 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2951
252 474 6 :

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

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

['QPDFWriter::writeEncryptionDictionary()']

66 16760 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3063
60 60 1 :

['do_sarray_io']

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

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

56 29151 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:531
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 :

['deflateEnd']

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

Runtime coverage analysis

Covered functions
1156
Functions that are reachable but not covered
345
Reachable functions
1759
Percentage of reachable functions covered
80.39%
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 8
/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 3
/src/qpdf/include/qpdf/QIntC.hh 49
/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 49
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 29
/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 8
/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 12
/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 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 64
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 16
/src/qpdf/libqpdf/QPDFObjectHandle.cc 76
/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/Pl_Buffer.cc 5
/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 6
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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 9
/src/qpdf/libqpdf/QPDFWriter.cc 62
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 9
/src/qpdf/libqpdf/QPDF_String.cc 3
/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_StdioFile.cc 1
/src/qpdf/libqpdf/Pl_MD5.cc 4
/src/qpdf/include/qpdf/QPDFWriter.hh 1
/src/qpdf/libqpdf/Pl_RC4.cc 1
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

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 983 21.6%
gold [1:9] 134 2.95%
yellow [10:29] 81 1.78%
greenyellow [30:49] 81 1.78%
lawngreen 50+ 3256 71.7%
All colors 4535 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
7569 7569 1 :

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

15017 44619 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2159
7215 14332 5 :

['QPDFObjectHandle::makeDirect(bool)', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'QTC::TC(char const*, char const*, int)', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc']

7239 14356 QPDFWriter::prepareFileForWrite() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2101
252 474 6 :

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

252 474 inflate call site: 00000 /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
47 47 1 :

['QPDFWriter::computeDeterministicIDData()']

63 7667 QPDFWriter::writeTrailer(QPDFWriter::trailer_e,int,bool,longlong,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1224
36 49948 28 :

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

52 57098 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1870
34 28522 16 :

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

58 29151 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:531
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: 00000 /src/zlib/deflate.c:1160
21 21 1 :

['crc32']

21 21 read_buf call site: 00000 /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
1210
Functions that are reachable but not covered
286
Reachable functions
1783
Percentage of reachable functions covered
83.96%
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 8
/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 3
/src/qpdf/include/qpdf/QIntC.hh 49
/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 49
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 29
/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 8
/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 12
/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 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 64
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 16
/src/qpdf/libqpdf/QPDFObjectHandle.cc 76
/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/Pl_Buffer.cc 5
/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 52
/src/qpdf/libqpdf/MD5.cc 6
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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 9
/src/qpdf/libqpdf/QPDFWriter.cc 65
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 9
/src/qpdf/libqpdf/QPDF_String.cc 3
/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_StdioFile.cc 1
/src/qpdf/libqpdf/Pl_MD5.cc 4
/src/qpdf/include/qpdf/QPDFWriter.hh 1
/src/qpdf/libqpdf/Pl_RC4.cc 1
/src/qpdf/include/qpdf/QUtil.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 1566 34.5%
gold [1:9] 148 3.26%
yellow [10:29] 107 2.35%
greenyellow [30:49] 48 1.05%
lawngreen 50+ 2668 58.8%
All colors 4537 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
9639 9639 1 :

['QPDFWriter::writeLinearized()']

9641 9683 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2265
8176 8176 1 :

['QPDFWriter::writeObjectStream(QPDFObjectHandle)']

8184 8188 QPDFWriter::writeObject(QPDFObjectHandle,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1799
7569 7569 1 :

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

22388 44619 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2159
7289 7289 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7305 32249 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3049
7132 7134 9 :

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

7176 71338 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2951
7115 7115 1 :

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

7115 21353 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:445
7115 7115 1 :

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

7115 7121 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:462
7115 7115 1 :

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

7115 7119 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:475
252 474 6 :

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

252 474 inflate call site: 00000 /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
36 49948 28 :

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

52 57098 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1870
34 28522 16 :

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

58 29151 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:531

Runtime coverage analysis

Covered functions
1133
Functions that are reachable but not covered
414
Reachable functions
1783
Percentage of reachable functions covered
76.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_insecure_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 8
/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 3
/src/qpdf/include/qpdf/QIntC.hh 49
/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 49
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 29
/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 8
/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 12
/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 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 64
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 16
/src/qpdf/libqpdf/QPDFObjectHandle.cc 76
/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/Pl_Buffer.cc 5
/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 52
/src/qpdf/libqpdf/MD5.cc 6
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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 9
/src/qpdf/libqpdf/QPDFWriter.cc 65
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 9
/src/qpdf/libqpdf/QPDF_String.cc 3
/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_StdioFile.cc 1
/src/qpdf/libqpdf/Pl_MD5.cc 4
/src/qpdf/include/qpdf/QPDFWriter.hh 1
/src/qpdf/libqpdf/Pl_RC4.cc 1
/src/qpdf/include/qpdf/QUtil.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 990 22.0%
gold [1:9] 137 3.05%
yellow [10:29] 133 2.96%
greenyellow [30:49] 78 1.73%
lawngreen 50+ 3153 70.2%
All colors 4491 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
7115 7115 1 :

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

7115 21353 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:445
7115 7115 1 :

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

7115 7121 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:462
7115 7115 1 :

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

7115 7119 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:475
252 474 6 :

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

252 474 inflate call site: 00000 /src/zlib/inflate.c:817
88 163733 11 :

['QPDFObjectHandle::isName() const', 'QPDFObjectHandle::isArray() const', 'QPDFObjectHandle::isDictionaryOfType(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getArrayNItems() const', 'QPDFObjectHandle::isDictionary() const', 'QPDF::interpretCF(std::__1::shared_ptr , QPDFObjectHandle)', 'QPDFObjectHandle::isNameAndEquals(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getArrayItem(int) const', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](char const*)', 'QPDFObjectHandle::~QPDFObjectHandle()', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const']

88 164188 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:1068
60 60 1 :

['do_sarray_io']

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

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

58 29151 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:531
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: 00000 /src/zlib/deflate.c:1160
21 21 1 :

['crc32']

21 21 read_buf call site: 00000 /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
1208
Functions that are reachable but not covered
275
Reachable functions
1761
Percentage of reachable functions covered
84.38%
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 8
/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 3
/src/qpdf/include/qpdf/QIntC.hh 49
/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 49
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 29
/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 8
/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 12
/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 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 64
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 16
/src/qpdf/libqpdf/QPDFObjectHandle.cc 76
/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/Pl_Buffer.cc 5
/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 6
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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 9
/src/qpdf/libqpdf/QPDFWriter.cc 63
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 9
/src/qpdf/libqpdf/QPDF_String.cc 3
/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_StdioFile.cc 1
/src/qpdf/libqpdf/Pl_MD5.cc 4
/src/qpdf/include/qpdf/QPDFWriter.hh 1
/src/qpdf/libqpdf/Pl_RC4.cc 1
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.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 626 18.1%
gold [1:9] 103 2.99%
yellow [10:29] 84 2.44%
greenyellow [30:49] 40 1.16%
lawngreen 50+ 2587 75.2%
All colors 3440 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
7115 7115 1 :

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

7115 21353 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:445
7115 7115 1 :

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

7115 7121 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:462
7115 7115 1 :

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

7115 7119 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:475
252 474 6 :

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

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 163733 11 :

['QPDFObjectHandle::isName() const', 'QPDFObjectHandle::isArray() const', 'QPDFObjectHandle::isDictionaryOfType(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getArrayNItems() const', 'QPDFObjectHandle::isDictionary() const', 'QPDF::interpretCF(std::__1::shared_ptr , QPDFObjectHandle)', 'QPDFObjectHandle::isNameAndEquals(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getArrayItem(int) const', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](char const*)', 'QPDFObjectHandle::~QPDFObjectHandle()', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const']

88 164188 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:1068
36 28522 16 :

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

60 29151 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:531
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_throw', '__cxa_allocate_exception', '__cxa_free_exception', 'QPDFExc::QPDFExc(QPDFExc const&)']

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

Runtime coverage analysis

Covered functions
885
Functions that are reachable but not covered
208
Reachable functions
1493
Percentage of reachable functions covered
86.07%
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 8
/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 3
/src/qpdf/include/qpdf/QIntC.hh 49
/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 43
/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 8
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 26
/src/qpdf/include/qpdf/QPDF.hh 10
/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 18
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 57
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 21
/src/qpdf/libqpdf/QPDFObjectHandle.cc 69
/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/Pl_Buffer.cc 5
/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 41
/src/qpdf/libqpdf/MD5.cc 4
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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/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 28
/src/qpdf/libqpdf/qpdf/NNTree.hh 4
/src/qpdf/include/qpdf/QPDFNameTreeObjectHelper.hh 1

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 2367 75.5%
gold [1:9] 30 0.95%
yellow [10:29] 39 1.24%
greenyellow [30:49] 23 0.73%
lawngreen 50+ 672 21.4%
All colors 3131 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
109504 502127 63 :

['QPDF::recover_encryption_key_with_password(std::__1::basic_string , std::__1::allocator > const&, QPDF::EncryptionData const&, bool&)', 'std::__1::set , std::__1::allocator >, std::__1::less , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > > >::begin[abi:ne180100]()', 'QPDFObjectHandle::isArray() const', 'QPDF::EncryptionData::~EncryptionData()', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100]()', 'QPDF::compute_encryption_key(std::__1::basic_string , std::__1::allocator > const&, QPDF::EncryptionData const&)', 'bool std::__1::operator==[abi:ne180100] >(std::__1::basic_string , std::__1::allocator > const&, 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 > > >::end[abi:ne180100]()', 'QPDFObjectHandle::getArrayNItems() const', 'QPDFExc::~QPDFExc()', 'QPDFObjectHandle::getBoolValue() const', 'std::__1::operator!=[abi:ne180100](std::__1::__tree_const_iterator , std::__1::allocator >, std::__1::__tree_node , std::__1::allocator >, void*>*, long> const&, std::__1::__tree_const_iterator , std::__1::allocator >, std::__1::__tree_node , std::__1::allocator >, void*>*, long> const&)', '__cxa_allocate_exception', 'std::__1::basic_string , std::__1::allocator >::length[abi:ne180100]() const', 'QPDFObjectHandle::QPDFObjectHandle(QPDFObjectHandle const&)', 'QUtil::hex_decode(std::__1::basic_string , std::__1::allocator > 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&)', 'QPDFObjectHandle::isString() 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::basic_string , std::__1::allocator > std::__1::operator+[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&&, char const*)', 'QPDF::getTrimmedUserPassword() const', 'std::__1::unique_ptr >::operator->[abi:ne180100]() const', 'pad_short_parameter(std::__1::basic_string , std::__1::allocator >&, unsigned long)', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](std::__1::basic_string , std::__1::allocator >&&)', 'check_owner_password(std::__1::basic_string , std::__1::allocator >&, std::__1::basic_string , std::__1::allocator > const&, QPDF::EncryptionData const&)', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'QPDF::warn(QPDFExc const&)', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::shared_ptr ::shared_ptr[abi:ne180100](std::__1::shared_ptr const&)', 'check_user_password(std::__1::basic_string , std::__1::allocator > const&, QPDF::EncryptionData const&)', 'std::__1::__tree_const_iterator , std::__1::allocator >, std::__1::__tree_node , std::__1::allocator >, void*>*, long>::operator*[abi:ne180100]() const', 'QPDFObjectHandle::isNull() const', 'std::__1::shared_ptr ::~shared_ptr[abi:ne180100]()', 'std::__1::basic_string , std::__1::allocator >::operator=(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::shared_ptr ::operator->[abi:ne180100]() const', 'QPDFObjectHandle::getIntValueAsInt() const', 'QPDFObjectHandle::isBool() 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 >&&)', 'bool std::__1::operator==[abi:ne180100] , std::__1::allocator >(std::__1::basic_string , std::__1::allocator > const&, char const*)', 'QPDFObjectHandle::isName() const', '__cxa_throw', 'QPDFObjectHandle::getStringValue() const', '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&)', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '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::set , std::__1::allocator >, std::__1::less , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > > >::~set[abi:ne180100]()', 'QPDFObjectHandle::isDictionary() const', 'QPDFObjectHandle::getIntValue() const', 'QPDF::damagedPDF(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&)', 'InputSource::getLastOffset() const', 'QPDF::interpretCF(std::__1::shared_ptr , QPDFObjectHandle)', 'std::__1::to_string(int)', 'QTC::TC(char const*, char const*, int)', 'std::__1::__tree_const_iterator , std::__1::allocator >, std::__1::__tree_node , std::__1::allocator >, void*>*, long>::operator++[abi:ne180100]()', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::isInteger() 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&)', '__cxa_free_exception', 'QPDF::damagedPDF(std::__1::basic_string , std::__1::allocator > const&)', 'QPDFObjectHandle::getKeys() const', 'QPDFObjectHandle::getName() const', 'QPDFObjectHandle::~QPDFObjectHandle()']

109504 502127 QPDF::initializeEncryption() call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:730
7117 7117 1 :

['QPDF::pushInheritedAttributesToPage()']

7117 7117 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:521
7115 21333 7 :

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

7115 21333 QPDF_Dictionary*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7115 21333 7 :

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

7115 21333 QPDF_Stream*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7115 21333 7 :

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

7115 21333 QPDF_Integer*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7115 21333 7 :

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

7115 21333 QPDF_Array*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7115 7198 3 :

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

7167 71378 QPDF::read_xrefTable(longlong) call site: 00000 /src/qpdf/libqpdf/QPDF_objects.cc:737
7115 7119 2 :

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

7151 43088 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:667
7115 7115 1 :

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

7115 21353 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:445
7115 7115 1 :

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

7115 7117 qpdf::BaseHandle::type_code()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:393
7115 7115 1 :

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

7115 7117 QPDFObject::getResolvedTypeCode()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:433
7115 7115 1 :

['QPDF::getAllPages()']

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

Runtime coverage analysis

Covered functions
413
Functions that are reachable but not covered
713
Reachable functions
1382
Percentage of reachable functions covered
48.41%
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/BufferInputSource.cc 4
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/libqpdf/Buffer.cc 9
/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/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/libqpdf/QUtil.cc 13
/src/qpdf/include/qpdf/JSON.hh 7
/src/qpdf/libqpdf/QPDF.cc 23
/src/qpdf/libqpdf/QPDFTokenizer.cc 34
/src/qpdf/libqpdf/QPDF_json.cc 5
/src/qpdf/libqpdf/QPDF_objects.cc 43
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 11
/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/libqpdf/qpdf/InputSource_private.hh 8
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/include/qpdf/QPDF.hh 10
/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 56
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 48
/src/qpdf/libqpdf/QPDF_Array.cc 12
/src/qpdf/libqpdf/QPDFObjectHandle.cc 67
/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/Pl_Buffer.cc 5
/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 41
/src/qpdf/libqpdf/MD5.cc 4
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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

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 922 20.3%
gold [1:9] 144 3.17%
yellow [10:29] 91 2.00%
greenyellow [30:49] 62 1.36%
lawngreen 50+ 3316 73.1%
All colors 4535 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
7569 7569 1 :

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

15017 44619 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2159
252 474 6 :

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

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

['QPDFWriter::computeDeterministicIDData()']

63 7667 QPDFWriter::writeTrailer(QPDFWriter::trailer_e,int,bool,longlong,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1224
36 49948 28 :

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

52 57098 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1870
34 28522 16 :

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

58 29151 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:531
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: 00000 /src/zlib/deflate.c:1160
21 21 1 :

['crc32']

21 21 read_buf call site: 00000 /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
20 20 4 :

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

20 20 QPDFParser::warn(QPDFExcconst&)const call site: 00000 /src/qpdf/libqpdf/QPDFParser.cc:649
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
1213
Functions that are reachable but not covered
277
Reachable functions
1783
Percentage of reachable functions covered
84.46%
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 8
/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 3
/src/qpdf/include/qpdf/QIntC.hh 49
/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 49
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 29
/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 8
/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 12
/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 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 64
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 16
/src/qpdf/libqpdf/QPDFObjectHandle.cc 76
/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/Pl_Buffer.cc 5
/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 52
/src/qpdf/libqpdf/MD5.cc 6
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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 9
/src/qpdf/libqpdf/QPDFWriter.cc 65
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 9
/src/qpdf/libqpdf/QPDF_String.cc 3
/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_StdioFile.cc 1
/src/qpdf/libqpdf/Pl_MD5.cc 4
/src/qpdf/include/qpdf/QPDFWriter.hh 1
/src/qpdf/libqpdf/Pl_RC4.cc 1
/src/qpdf/include/qpdf/QUtil.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 984 21.9%
gold [1:9] 147 3.27%
yellow [10:29] 99 2.20%
greenyellow [30:49] 87 1.93%
lawngreen 50+ 3174 70.6%
All colors 4491 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
7115 7115 1 :

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

7115 21353 QPDFObjectHandle::as_array(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:445
7115 7115 1 :

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

7115 7121 QPDFObjectHandle::as_dictionary(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:462
7115 7115 1 :

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

7115 7119 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:475
252 474 6 :

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

252 474 inflate call site: 00000 /src/zlib/inflate.c:817
116 135 5 :

['BitStream::BitStream(unsigned char const*, unsigned long)', 'BitStream::getBitsSigned(unsigned long)', 'BitWriter::BitWriter(Pipeline*)', 'BitWriter::writeBitsSigned(long long, unsigned long)', 'BitWriter::flush()']

116 137 Pl_TIFFPredictor::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:78
88 163733 11 :

['QPDFObjectHandle::isName() const', 'QPDFObjectHandle::isArray() const', 'QPDFObjectHandle::isDictionaryOfType(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getArrayNItems() const', 'QPDFObjectHandle::isDictionary() const', 'QPDF::interpretCF(std::__1::shared_ptr , QPDFObjectHandle)', 'QPDFObjectHandle::isNameAndEquals(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getArrayItem(int) const', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](char const*)', 'QPDFObjectHandle::~QPDFObjectHandle()', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const']

88 164188 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:1068
60 60 1 :

['do_sarray_io']

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

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

58 29151 qpdf::Stream::pipeStreamData(Pipeline*,bool*,int,qpdf_stream_decode_level_e,bool,bool) call site: 00000 /src/qpdf/libqpdf/QPDF_Stream.cc:531
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: 00000 /src/zlib/deflate.c:1160
21 21 1 :

['crc32']

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

Runtime coverage analysis

Covered functions
1205
Functions that are reachable but not covered
269
Reachable functions
1761
Percentage of reachable functions covered
84.72%
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 8
/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 3
/src/qpdf/include/qpdf/QIntC.hh 49
/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 49
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 29
/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 8
/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 12
/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 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 64
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 16
/src/qpdf/libqpdf/QPDFObjectHandle.cc 76
/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/Pl_Buffer.cc 5
/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 6
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.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 9
/src/qpdf/libqpdf/QPDFWriter.cc 63
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 9
/src/qpdf/libqpdf/QPDF_String.cc 3
/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_StdioFile.cc 1
/src/qpdf/libqpdf/Pl_MD5.cc 4
/src/qpdf/include/qpdf/QPDFWriter.hh 1
/src/qpdf/libqpdf/Pl_RC4.cc 1
/src/qpdf/include/qpdf/QUtil.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
QPDF::showLinearizationData() /src/qpdf/libqpdf/QPDF_linearization.cc 1 ['N/A'] 31 0 94 17 12 1397 0 8752 1426
QPDFPageObjectHelper::flattenRotation(QPDFAcroFormDocumentHelper*) /src/qpdf/libqpdf/QPDFPageObjectHelper.cc 2 ['N/A', 'N/A'] 36 0 1120 192 142 1706 0 10639 1415
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 1481 307 286 1383 0 7886 540
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 1413 0 7928 300
(anonymousnamespace)::InlineImageTracker::handleToken(QPDFTokenizer::Tokenconst&) /src/qpdf/libqpdf/QPDFPageObjectHelper.cc 2 ['N/A', 'N/A'] 31 0 380 68 52 1293 0 7499 265

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

Functions statically reachable by fuzzers
54.0%
1649 / 3038
Cyclomatic complexity statically reachable by fuzzers
71.0%
24204 / 34146

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/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/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/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/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/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/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/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::finish()', 'Pl_DCT::Pl_DCT(char const*, Pipeline*)', 'Pl_DCT::finish()']

/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/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/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/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::finish()', 'Pl_DCT::Pl_DCT(char const*, Pipeline*)', 'Pl_DCT::finish()']

/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/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=['QPDF::initializeEncryption()', 'QPDFObjectHandle::newDictionary(std::__1::map, std::__1::allocator >, QPDFObjectHandle, std::__1::less, std::__1::allocator > >, std::__1::allocator, std::__1::allocator > const, QPDFObjectHandle> > > const&)', 'QPDFObjectHandle::newNull()', 'QPDFObjectHandle::parse(QPDF*, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&)', 'QPDFObjectHandle::getIntValueAsInt() const', 'QPDFObjectHandle::removeKey(std::__1::basic_string, std::__1::allocator > const&)', 'int QIntC::to_int(unsigned long const&)', 'std::__1::shared_ptr QPDFObject::create, std::__1::allocator >&>(std::__1::basic_string, std::__1::allocator >&)', 'QPDFObjectHandle::newArray(std::__1::vector > const&)', 'qpdf::Array::array() const']

/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)', 'qpdf::BaseDictionary::dict() const', '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&)', 'QPDFObjectHandle::getName() const', 'QPDFObjectHandle::getArrayItem(int) const']

/src/qpdf/fuzz/qpdf_page_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::Name::normalize(std::__1::basic_string, std::__1::allocator > const&)', '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()', 'QPDFPageDocumentHelper::flattenAnnotationsForPage(QPDFPageObjectHelper&, QPDFObjectHandle&, QPDFAcroFormDocumentHelper&, int, int)', 'qpdf::BaseHandle::copy(bool) const', 'qpdf::Tokenizer::inBeforeToken(char)', '(anonymous namespace)::JSONParser::getToken()', '(anonymous namespace)::JSONParser::getToken()']

/src/qpdf/fuzz/qpdf_page_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::interpretCF(std::__1::shared_ptr, QPDFObjectHandle)', 'qpdf::Name::normalize(std::__1::basic_string, std::__1::allocator > const&)', '(anonymous namespace)::JSONParser::handleToken()', '(anonymous namespace)::JSONParser::handleToken()', 'qpdf::BaseHandle::copy(bool) const', 'qpdf::Tokenizer::inBeforeToken(char)', '(anonymous namespace)::JSONParser::getToken()', '(anonymous namespace)::JSONParser::getToken()', 'QPDFObjectHandle::hasKey(std::__1::basic_string, std::__1::allocator > const&) 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()', 'QPDFWriter::writeEncryptionDictionary()', 'ObjTable::large_element(unsigned long)', 'BitWriter::flush()', 'QPDFWriter::writeObject(QPDFObjectHandle, int)', 'QPDFWriter::writeStandard()', 'QPDFWriter::write()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'QPDFWriter::activatePipelineStack(QPDFWriter::PipelinePopper&, std::__1::basic_string, std::__1::allocator >&)', 'BitWriter::writeBits(unsigned long long, unsigned long)']

/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)', 'BitWriter::flush()', 'QPDFWriter::writeStandard()', 'QPDFWriter::generateID()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'BitWriter::writeBits(unsigned long long, unsigned long)', 'QPDFWriter::setMinimumPDFVersion(std::__1::basic_string, std::__1::allocator > const&, int)', 'QPDFWriter::openObject(int)', 'qpdf::BaseHandle::copy(bool) const']

/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)', 'BitWriter::flush()', 'QPDFWriter::writeStandard()', 'QPDFWriter::generateID()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'BitWriter::writeBits(unsigned long long, unsigned long)', 'QPDFWriter::setMinimumPDFVersion(std::__1::basic_string, std::__1::allocator > const&, int)', 'QPDFWriter::openObject(int)', 'qpdf::BaseHandle::copy(bool) 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()', 'QPDFWriter::prepareFileForWrite()', 'QPDFWriter::generateID()', 'qpdf::BaseHandle::copy(bool) const', 'QPDFWriter::writeLinearized()', 'QPDF::decryptStream(std::__1::shared_ptr, std::__1::shared_ptr, QPDF&, Pipeline*&, QPDFObjGen, QPDFObjectHandle&, bool, std::__1::unique_ptr >&)', 'QPDFWriter::writeLinearized()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'qpdf::BaseHandle::unparse() 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()', 'QPDFWriter::writeEncryptionDictionary()', 'ObjTable::large_element(unsigned long)', 'BitWriter::flush()', 'QPDFWriter::writeObject(QPDFObjectHandle, int)', 'QPDFWriter::writeStandard()', 'QPDFWriter::write()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'QPDFWriter::activatePipelineStack(QPDFWriter::PipelinePopper&, std::__1::basic_string, std::__1::allocator >&)', '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()', 'ObjTable::large_element(unsigned long)', 'QPDF::interpretCF(std::__1::shared_ptr, QPDFObjectHandle)', 'qpdf::BaseHandle::copy(bool) const', 'QPDFWriter::unparseObject(QPDFObjectHandle, int, int, unsigned long, bool)', 'QPDFWriter::writeLinearized()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'qpdf::BaseHandle::unparse() const', 'qpdf::Stream::pipeStreamData(Pipeline*, bool*, int, qpdf_stream_decode_level_e, bool, bool)', 'std::__1::basic_string, std::__1::allocator > int_to_string_base_internal(long long, int, int)']

/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::interpretCF(std::__1::shared_ptr, QPDFObjectHandle)', 'qpdf::Stream::pipeStreamData(Pipeline*, bool*, int, qpdf_stream_decode_level_e, bool, bool)', 'qpdf::BaseDictionary::dict() const', '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&)', 'QPDFObjectHandle::getName() const', 'QPDFObjectHandle::getArrayItem(int) const']

/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=['QPDF::initializeEncryption()', 'QPDFObjectHandle::newDictionary(std::__1::map, std::__1::allocator >, QPDFObjectHandle, std::__1::less, std::__1::allocator > >, std::__1::allocator, std::__1::allocator > const, QPDFObjectHandle> > > const&)', 'QPDFObjectHandle::newNull()', 'QPDFObjectHandle::parse(QPDF*, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&)', 'QPDFObjectHandle::getIntValueAsInt() const', 'QPDFObjectHandle::removeKey(std::__1::basic_string, std::__1::allocator > const&)', 'int QIntC::to_int(unsigned long const&)', 'std::__1::shared_ptr QPDFObject::create, std::__1::allocator >&>(std::__1::basic_string, std::__1::allocator >&)', 'QPDFObjectHandle::newArray(std::__1::vector > const&)', 'qpdf::Array::array() 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()', 'QPDFWriter::generateID()', 'qpdf::BaseHandle::copy(bool) const', 'QPDFWriter::writeLinearized()', 'QPDFWriter::writeLinearized()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'qpdf::BaseHandle::unparse() const', 'qpdf::Stream::pipeStreamData(Pipeline*, bool*, int, qpdf_stream_decode_level_e, bool, bool)', 'QPDFWriter::preserveObjectStreams()']

/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()', 'ObjTable::large_element(unsigned long)', 'QPDF::interpretCF(std::__1::shared_ptr, QPDFObjectHandle)', 'qpdf::BaseHandle::copy(bool) const', 'QPDFWriter::unparseObject(QPDFObjectHandle, int, int, unsigned long, bool)', 'QPDFWriter::writeLinearized()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'qpdf::BaseHandle::unparse() const', 'qpdf::Stream::pipeStreamData(Pipeline*, bool*, int, qpdf_stream_decode_level_e, bool, bool)', 'std::__1::basic_string, std::__1::allocator > int_to_string_base_internal(long long, int, int)']

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_fuzzer', 'qpdf_lin_fuzzer', 'flate_fuzzer', 'qpdf_crypt_fuzzer', 'future_flate_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_lin_fuzzer']
deflate 257 74 28.79% ['qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'flate_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_flate_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
output_pass_setup 45 10 22.22% ['qpdf_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_dct_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'dct_fuzzer']
start_pass 173 39 22.54% ['qpdf_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_dct_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'dct_fuzzer']
ycc_rgb_convert 36 8 22.22% ['qpdf_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_dct_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'dct_fuzzer']
jpeg_resync_to_restart 34 6 17.64% ['qpdf_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_dct_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'dct_fuzzer']
jpeg_core_output_dimensions 130 32 24.61% ['qpdf_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_dct_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'dct_fuzzer']
use_merged_upsample 38 6 15.78% ['qpdf_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_dct_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'dct_fuzzer']
jinit_d_post_controller 39 20 51.28% ['qpdf_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_dct_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'dct_fuzzer']
j12init_d_post_controller 40 20 50.0% ['qpdf_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_dct_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'dct_fuzzer']
access_virt_sarray 59 31 52.54% ['qpdf_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_dct_fuzzer', 'future_qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'dct_fuzzer']
qpdf::BaseHandle::unparse()const 74 16 21.62% ['qpdf_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_page_fuzzer', 'future_qpdf_lin_fuzzer']
QPDFWriter::interpretR3EncryptionParameters(std::__1::set ,std::__1::allocator >&,charconst*,charconst*,bool,bool,bool,bool,bool,bool,qpdf_r3_print_e,qpdf_r3_modify_e) 40 16 40.0% ['future_qpdf_crypt_insecure_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_crypt_insecure_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/include/qpdf/QPDFLogger.hh [] []
/src/qpdf/libqpdf/RC4_native.cc [] []
/src/qpdf/libqpdf/qpdf/SecureRandomDataProvider.hh [] []
/src/qpdf/include/qpdf/QPDFSystemError.hh ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] []
/src/qpdf/libqpdf/ResourceFinder.cc [] []
/src/libjpeg-turbo/src/jdmaster.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/include/qpdf/QPDFObjectHandle.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/zlib/inflate.c ['flate_fuzzer', 'future_flate_fuzzer'] []
/src/qpdf/libqpdf/QPDFAnnotationObjectHelper.cc ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/fuzz/qpdf_outlines_fuzzer.cc ['qpdf_outlines_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/jcparam.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/include/qpdf/QPDFWriter.hh ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDFExc.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/fuzz/qpdf_crypt_fuzzer.cc ['qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer'] ['qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_Base64.hh [] []
/src/qpdf/include/qpdf/QUtil.hh ['future_pngpredictor_fuzzer', 'pngpredictor_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_pngpredictor_fuzzer', 'pngpredictor_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/include/qpdf/QPDFPageObjectHelper.hh ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jdmainct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/QPDFWriter.cc ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDF_String.cc ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/zlib/crc32.c ['flate_fuzzer', 'future_flate_fuzzer'] []
/src/qpdf/libqpdf/qpdf/Pl_ASCII85Decoder.hh ['ascii85_fuzzer', 'future_ascii85_fuzzer'] []
/src/qpdf/include/qpdf/QPDFOutlineObjectHelper.hh ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/qpdf/libqpdf/NNTree.cc ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jfdctfst.c [] []
/src/libjpeg-turbo/src/wrapper/../jdcolor.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/jclhuff.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/Pl_RunLength.cc ['runlength_fuzzer', 'future_runlength_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['runlength_fuzzer', 'future_runlength_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/jerror.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDFNameTreeObjectHelper.cc ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/qpdf/libqpdf/QPDFPageObjectHelper.cc ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/include/qpdf/QPDFXRefEntry.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/include/qpdf/QTC.hh ['ascii85_fuzzer', 'tiffpredictor_fuzzer', 'runlength_fuzzer', 'future_ascii85_fuzzer', 'future_runlength_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'future_hex_fuzzer', 'future_pngpredictor_fuzzer', 'hex_fuzzer', 'future_lzw_fuzzer', 'pngpredictor_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['ascii85_fuzzer', 'tiffpredictor_fuzzer', 'future_ascii85_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'future_hex_fuzzer', 'future_pngpredictor_fuzzer', 'hex_fuzzer', 'future_lzw_fuzzer', 'pngpredictor_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QUtil.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/qpdf/ResourceFinder.hh [] []
/src/libjpeg-turbo/src/wrapper/../jcsample.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/jcapimin.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/QPDFMatrix.cc ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jccoefct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/fuzz/runlength_fuzzer.cc ['runlength_fuzzer', 'future_runlength_fuzzer'] ['runlength_fuzzer', 'future_runlength_fuzzer']
/src/qpdf/include/qpdf/RandomDataProvider.hh [] []
/usr/local/bin/../include/c++/v1/string [] []
/src/qpdf/libqpdf/qpdf/QPDF_private.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/include/qpdf/QPDFStreamFilter.hh [] []
/src/qpdf/libqpdf/QPDFCrypto_native.cc [] []
/src/qpdf/include/qpdf/QPDFObjGen.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDFXRefEntry.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/include/qpdf/QPDFOutlineDocumentHelper.hh ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh ['future_pngpredictor_fuzzer', 'pngpredictor_fuzzer'] ['future_pngpredictor_fuzzer', 'pngpredictor_fuzzer']
/src/qpdf/include/qpdf/InputSource.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/Pl_Concatenate.cc [] []
/src/libjpeg-turbo/src/jcmarker.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/qpdf/bits_functions.hh ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jdsample.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/Pl_StdioFile.cc ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/BitStream.cc ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer'] ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer']
/src/libjpeg-turbo/src/jdarith.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/QPDF.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/jmemnobs.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/include/qpdf/QPDFTokenizer.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jdapistd.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/QPDFNumberTreeObjectHelper.cc ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/libqpdf/Pl_String.cc ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/libqpdf/qpdf/AES_PDF_native.hh [] []
/src/libjpeg-turbo/src/jcphuff.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/wrapper/../jfdctint.c [] []
/src/qpdf/libqpdf/QPDFPageDocumentHelper.cc ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/libqpdf/qpdf/QPDFCrypto_native.hh [] []
/src/qpdf/libqpdf/qpdf/JSON_writer.hh ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jidctint.c [] []
/src/qpdf/libqpdf/Pl_AES_PDF.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/include/qpdf/QPDFExc.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/Pl_Count.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/libjpeg-turbo/src/jchuff.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/MD5_native.cc [] []
/usr/local/bin/../include/c++/v1/optional [] []
/usr/local/bin/../include/c++/v1/stdexcept ['tiffpredictor_fuzzer', 'flate_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'dct_fuzzer', 'future_flate_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] []
/src/qpdf/include/qpdf/QPDFAnnotationObjectHelper.hh ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDF_pages.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/Pl_MD5.cc ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDFObjectHelper.cc ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/qpdf/libqpdf/SecureRandomDataProvider.cc [] []
/usr/local/bin/../include/c++/v1/__exception/exception.h [] []
/src/libjpeg-turbo/src/jfdctflt.c [] []
/src/libjpeg-turbo/src/wrapper/../jdcoefct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/include/qpdf/QPDFCryptoImpl.hh [] []
/src/zlib/inffast.c ['flate_fuzzer', 'future_flate_fuzzer'] []
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/Pl_DCT.cc ['dct_fuzzer', 'future_dct_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDF_json.cc ['future_json_fuzzer', 'json_fuzzer'] ['future_json_fuzzer', 'json_fuzzer']
/src/qpdf/libqpdf/qpdf/ObjTable.hh ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jquant2.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/jcomapi.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/ContentNormalizer.cc [] []
/src/qpdf/libqpdf/Pl_Flate.cc ['flate_fuzzer', 'future_flate_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['flate_fuzzer', 'future_flate_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDFObjectHandle.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/qpdf/OffsetInputSource.hh [] []
/src/qpdf/include/qpdf/QPDFNameTreeObjectHelper.hh ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_ASCIIHexDecoder.hh ['future_hex_fuzzer', 'hex_fuzzer'] []
/src/qpdf/libqpdf/RC4.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/zlib/deflate.c ['flate_fuzzer', 'future_flate_fuzzer'] ['flate_fuzzer', 'future_flate_fuzzer']
/src/libjpeg-turbo/src/jdmarker.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/QPDFObject.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDFOutlineObjectHelper.cc ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/qpdf/include/qpdf/QPDFPageDocumentHelper.hh ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/libqpdf/BufferInputSource.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/Pl_Base64.cc [] []
/src/qpdf/libqpdf/InputSource.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDF_Dictionary.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jccolor.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/sha2.c [] []
/src/qpdf/fuzz/ascii85_fuzzer.cc ['ascii85_fuzzer', 'future_ascii85_fuzzer'] ['ascii85_fuzzer', 'future_ascii85_fuzzer']
/src/qpdf/libqpdf/QPDFDocumentHelper.cc ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jidctflt.c [] []
/src/qpdf/libqpdf/Pl_Discard.cc ['ascii85_fuzzer', 'tiffpredictor_fuzzer', 'runlength_fuzzer', 'future_ascii85_fuzzer', 'future_runlength_fuzzer', 'flate_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'future_hex_fuzzer', 'future_pngpredictor_fuzzer', 'dct_fuzzer', 'hex_fuzzer', 'future_flate_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'pngpredictor_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['ascii85_fuzzer', 'tiffpredictor_fuzzer', 'runlength_fuzzer', 'future_ascii85_fuzzer', 'future_runlength_fuzzer', 'flate_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'future_hex_fuzzer', 'future_pngpredictor_fuzzer', 'dct_fuzzer', 'hex_fuzzer', 'future_flate_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'pngpredictor_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/zlib/adler32.c ['flate_fuzzer', 'future_flate_fuzzer'] ['flate_fuzzer', 'future_flate_fuzzer']
/src/qpdf/libqpdf/QPDF_encryption.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/include/qpdf/QPDFFormFieldObjectHelper.hh ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/libqpdf/QPDFStreamFilter.cc [] []
/src/qpdf/libqpdf/QPDF_Array.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jcapistd.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/zlib/zutil.c [] []
/usr/local/bin/../include/c++/v1/__iterator/move_iterator.h [] []
/src/qpdf/libqpdf/AES_PDF_native.cc [] []
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jidctfst.c [] []
/src/libjpeg-turbo/src/jmemmgr.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/fuzz/pngpredictor_fuzzer.cc ['future_pngpredictor_fuzzer', 'pngpredictor_fuzzer'] ['future_pngpredictor_fuzzer', 'pngpredictor_fuzzer']
/src/qpdf/libqpdf/QPDF_Stream.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/Pl_OStream.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDFSystemError.cc ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/jdapimin.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/Pl_QPDFTokenizer.cc ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/libqpdf/Pl_Buffer.cc ['dct_fuzzer', 'future_dct_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/jdhuff.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/QPDF_optimization.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/PDFVersion.cc [] []
/src/qpdf/libqpdf/Pl_SHA2.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/MD5.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/fuzz/tiffpredictor_fuzzer.cc ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer'] ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer']
/src/qpdf/libqpdf/sha2big.c [] []
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jutils.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/jstdhuff.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/include/qpdf/QPDFPageLabelDocumentHelper.hh ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/Buffer.cc ['lzw_fuzzer', 'dct_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['lzw_fuzzer', 'dct_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/JSON.cc ['future_json_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'json_fuzzer'] ['future_json_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'json_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jcdiffct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/QPDFTokenizer.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/qpdf/Util.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/sph/md_helper.c [] []
/src/qpdf/libqpdf/qpdf/Pl_LZWDecoder.hh ['lzw_fuzzer', 'future_lzw_fuzzer'] ['lzw_fuzzer', 'future_lzw_fuzzer']
/src/libjpeg-turbo/simd/x86_64/jsimd.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/QPDFFormFieldObjectHelper.cc ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jcprepct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/wrapper/../jddctmgr.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/QPDFCryptoProvider.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jquant1.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/SHA2_native.cc [] []
/src/libjpeg-turbo/src/wrapper/../jdmainct.h [] []
/src/qpdf/libqpdf/OffsetInputSource.cc [] []
/src/qpdf/libqpdf/SF_FlateLzwDecode.cc [] []
/src/qpdf/libqpdf/qpdf/InputSource_private.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/FileInputSource.cc [] []
/src/libjpeg-turbo/src/jcinit.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/Pl_LZWDecoder.cc ['lzw_fuzzer', 'future_lzw_fuzzer'] ['lzw_fuzzer', 'future_lzw_fuzzer']
/src/zlib/inftrees.c ['flate_fuzzer', 'future_flate_fuzzer'] []
/src/qpdf/fuzz/json_fuzzer.cc ['future_json_fuzzer', 'json_fuzzer'] ['future_json_fuzzer', 'json_fuzzer']
/src/qpdf/fuzz/qpdf_lin_fuzzer.cc ['qpdf_lin_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_lin_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/fuzz/qpdf_page_fuzzer.cc ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/libjpeg-turbo/src/jcmaster.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/include/qpdf/QPDFAcroFormDocumentHelper.hh ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jcmainct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/rijndael.cc [] []
/src/qpdf/fuzz/hex_fuzzer.cc ['future_hex_fuzzer', 'hex_fuzzer'] ['future_hex_fuzzer', 'hex_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jidctred.c [] []
/src/qpdf/include/qpdf/JSON.hh ['future_json_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'json_fuzzer'] ['future_json_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'json_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jclossls.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/usr/local/bin/../include/c++/v1/sstream ['tiffpredictor_fuzzer', 'flate_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'dct_fuzzer', 'future_flate_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] []
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jdmerge.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/fuzz/qpdf_fuzzer.cc ['qpdf_fuzzer', 'future_qpdf_fuzzer'] ['qpdf_fuzzer', 'future_qpdf_fuzzer']
/src/qpdf/libqpdf/qpdf/CryptoRandomDataProvider.hh [] []
/src/qpdf/libqpdf/qpdf/Pl_TIFFPredictor.hh ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer'] ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer']
/src/qpdf/include/qpdf/QPDF.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/fuzz/lzw_fuzzer.cc ['lzw_fuzzer', 'future_lzw_fuzzer'] ['lzw_fuzzer', 'future_lzw_fuzzer']
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDFOutlineDocumentHelper.cc ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/qpdf/libqpdf/Pl_ASCII85Decoder.cc ['ascii85_fuzzer', 'future_ascii85_fuzzer'] ['ascii85_fuzzer', 'future_ascii85_fuzzer']
/src/qpdf/include/qpdf/QPDFNumberTreeObjectHelper.hh ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/include/qpdf/Pl_DCT.hh [] []
/src/qpdf/libqpdf/qpdf/QPDFParser.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/include/qpdf/ObjectHandle.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/fuzz/dct_fuzzer.cc ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/QPDFParser.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jdpostct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/usr/local/bin/../include/c++/v1/variant [] []
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDF_objects.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/Pl_RC4.cc ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDFPageLabelDocumentHelper.cc ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer'] ['future_qpdf_page_fuzzer', 'qpdf_page_fuzzer']
/src/qpdf/libqpdf/QPDFLogger.cc ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh [] []
/src/zlib/trees.c ['flate_fuzzer', 'future_flate_fuzzer'] ['flate_fuzzer', 'future_flate_fuzzer']
/src/qpdf/libqpdf/Pipeline.cc ['ascii85_fuzzer', 'tiffpredictor_fuzzer', 'runlength_fuzzer', 'future_ascii85_fuzzer', 'future_runlength_fuzzer', 'flate_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'future_hex_fuzzer', 'future_pngpredictor_fuzzer', 'dct_fuzzer', 'hex_fuzzer', 'future_flate_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'pngpredictor_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['ascii85_fuzzer', 'tiffpredictor_fuzzer', 'runlength_fuzzer', 'future_ascii85_fuzzer', 'future_runlength_fuzzer', 'flate_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'future_hex_fuzzer', 'future_pngpredictor_fuzzer', 'dct_fuzzer', 'hex_fuzzer', 'future_flate_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'pngpredictor_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/sph/sph_types.h [] []
/src/qpdf/fuzz/flate_fuzzer.cc ['flate_fuzzer', 'future_flate_fuzzer'] ['flate_fuzzer', 'future_flate_fuzzer']
/src/libjpeg-turbo/src/jdinput.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/libqpdf/qpdf/MD5.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] []
/src/libjpeg-turbo/src/wrapper/../jcdctmgr.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/wrapper/../jddiffct.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/libqpdf/Pl_PNGFilter.cc ['future_pngpredictor_fuzzer', 'pngpredictor_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['future_pngpredictor_fuzzer', 'pngpredictor_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/qpdf/NNTree.hh ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/libjpeg-turbo/src/jcarith.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/qpdf/include/qpdf/QPDFDocumentHelper.hh ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/libjpeg-turbo/src/wrapper/../jdlossls.c ['dct_fuzzer', 'future_dct_fuzzer'] []
/src/libjpeg-turbo/src/jdlhuff.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/libjpeg-turbo/src/jdphuff.c ['dct_fuzzer', 'future_dct_fuzzer'] ['dct_fuzzer', 'future_dct_fuzzer']
/src/qpdf/include/qpdf/QIntC.hh ['tiffpredictor_fuzzer', 'flate_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'dct_fuzzer', 'future_flate_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['tiffpredictor_fuzzer', 'flate_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'dct_fuzzer', 'future_flate_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/include/qpdf/Pipeline.hh ['ascii85_fuzzer', 'tiffpredictor_fuzzer', 'runlength_fuzzer', 'future_ascii85_fuzzer', 'future_runlength_fuzzer', 'flate_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'future_hex_fuzzer', 'future_pngpredictor_fuzzer', 'dct_fuzzer', 'hex_fuzzer', 'future_flate_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'pngpredictor_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['ascii85_fuzzer', 'tiffpredictor_fuzzer', 'runlength_fuzzer', 'future_ascii85_fuzzer', 'future_runlength_fuzzer', 'flate_fuzzer', 'future_tiffpredictor_fuzzer', 'lzw_fuzzer', 'future_hex_fuzzer', 'future_pngpredictor_fuzzer', 'dct_fuzzer', 'hex_fuzzer', 'future_flate_fuzzer', 'future_lzw_fuzzer', 'future_dct_fuzzer', 'pngpredictor_fuzzer', 'future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/qpdf/Pl_MD5.hh [] []
/src/qpdf/libqpdf/qpdf/RC4.hh ['future_json_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'json_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] []
/src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc ['qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer'] ['qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer']
/src/qpdf/libqpdf/BitWriter.cc ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['tiffpredictor_fuzzer', 'future_tiffpredictor_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/libqpdf/QPDF_linearization.cc ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer'] ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'future_qpdf_lin_fuzzer']
/src/qpdf/include/qpdf/QPDFObjectHelper.hh ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer'] ['qpdf_outlines_fuzzer', 'future_qpdf_page_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_outlines_fuzzer']
/src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc ['future_hex_fuzzer', 'hex_fuzzer'] ['future_hex_fuzzer', 'hex_fuzzer']

Directories in report

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

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
ascii85_fuzzer fuzzerLogFile-0-tfDGQBS3S9.data fuzzerLogFile-0-tfDGQBS3S9.data.yaml ascii85_fuzzer.covreport
tiffpredictor_fuzzer fuzzerLogFile-0-oWrnAe5qhM.data fuzzerLogFile-0-oWrnAe5qhM.data.yaml tiffpredictor_fuzzer.covreport
runlength_fuzzer fuzzerLogFile-0-IppcChkJGT.data fuzzerLogFile-0-IppcChkJGT.data.yaml runlength_fuzzer.covreport
future_ascii85_fuzzer fuzzerLogFile-0-aJ4SJi3iBL.data fuzzerLogFile-0-aJ4SJi3iBL.data.yaml future_ascii85_fuzzer.covreport
future_runlength_fuzzer fuzzerLogFile-0-iwbD2jonPI.data fuzzerLogFile-0-iwbD2jonPI.data.yaml future_runlength_fuzzer.covreport
flate_fuzzer fuzzerLogFile-0-IKYMOuBtCT.data fuzzerLogFile-0-IKYMOuBtCT.data.yaml flate_fuzzer.covreport
future_tiffpredictor_fuzzer fuzzerLogFile-0-KSJGlnfLA0.data fuzzerLogFile-0-KSJGlnfLA0.data.yaml future_tiffpredictor_fuzzer.covreport
lzw_fuzzer fuzzerLogFile-0-7GVT2vypVx.data fuzzerLogFile-0-7GVT2vypVx.data.yaml lzw_fuzzer.covreport
future_hex_fuzzer fuzzerLogFile-0-y7Vs8ZBB5s.data fuzzerLogFile-0-y7Vs8ZBB5s.data.yaml future_hex_fuzzer.covreport
future_pngpredictor_fuzzer fuzzerLogFile-0-OgAM8AW8la.data fuzzerLogFile-0-OgAM8AW8la.data.yaml future_pngpredictor_fuzzer.covreport
dct_fuzzer fuzzerLogFile-0-huF0vXTh0W.data fuzzerLogFile-0-huF0vXTh0W.data.yaml dct_fuzzer.covreport
hex_fuzzer fuzzerLogFile-0-1hlEnh9Z5p.data fuzzerLogFile-0-1hlEnh9Z5p.data.yaml hex_fuzzer.covreport
future_flate_fuzzer fuzzerLogFile-0-m3bKSRgSbE.data fuzzerLogFile-0-m3bKSRgSbE.data.yaml future_flate_fuzzer.covreport
future_lzw_fuzzer fuzzerLogFile-0-OlZw2Zaiay.data fuzzerLogFile-0-OlZw2Zaiay.data.yaml future_lzw_fuzzer.covreport
future_dct_fuzzer fuzzerLogFile-0-RdZA0kTukF.data fuzzerLogFile-0-RdZA0kTukF.data.yaml future_dct_fuzzer.covreport
pngpredictor_fuzzer fuzzerLogFile-0-IHoHHbDHb7.data fuzzerLogFile-0-IHoHHbDHb7.data.yaml pngpredictor_fuzzer.covreport
future_json_fuzzer fuzzerLogFile-0-97S5qyM5ET.data fuzzerLogFile-0-97S5qyM5ET.data.yaml future_json_fuzzer.covreport
qpdf_outlines_fuzzer fuzzerLogFile-0-iW1iIt3cZD.data fuzzerLogFile-0-iW1iIt3cZD.data.yaml qpdf_outlines_fuzzer.covreport
future_qpdf_page_fuzzer fuzzerLogFile-0-JbU56O4lNH.data fuzzerLogFile-0-JbU56O4lNH.data.yaml future_qpdf_page_fuzzer.covreport
qpdf_page_fuzzer fuzzerLogFile-0-UNgZA1cbjP.data fuzzerLogFile-0-UNgZA1cbjP.data.yaml qpdf_page_fuzzer.covreport
qpdf_crypt_insecure_fuzzer fuzzerLogFile-0-T2aw7dDnca.data fuzzerLogFile-0-T2aw7dDnca.data.yaml qpdf_crypt_insecure_fuzzer.covreport
qpdf_fuzzer fuzzerLogFile-0-pMoKkEBm3X.data fuzzerLogFile-0-pMoKkEBm3X.data.yaml qpdf_fuzzer.covreport
future_qpdf_fuzzer fuzzerLogFile-0-smeRKWrDEe.data fuzzerLogFile-0-smeRKWrDEe.data.yaml future_qpdf_fuzzer.covreport
qpdf_crypt_fuzzer fuzzerLogFile-0-zNsiSEL0zI.data fuzzerLogFile-0-zNsiSEL0zI.data.yaml qpdf_crypt_fuzzer.covreport
future_qpdf_crypt_insecure_fuzzer fuzzerLogFile-0-SSw2WecX0M.data fuzzerLogFile-0-SSw2WecX0M.data.yaml future_qpdf_crypt_insecure_fuzzer.covreport
qpdf_lin_fuzzer fuzzerLogFile-0-lET0cb3S9l.data fuzzerLogFile-0-lET0cb3S9l.data.yaml qpdf_lin_fuzzer.covreport
future_qpdf_outlines_fuzzer fuzzerLogFile-0-74IQkMLa0e.data fuzzerLogFile-0-74IQkMLa0e.data.yaml future_qpdf_outlines_fuzzer.covreport
json_fuzzer fuzzerLogFile-0-nyL9GvV2rS.data fuzzerLogFile-0-nyL9GvV2rS.data.yaml json_fuzzer.covreport
future_qpdf_crypt_fuzzer fuzzerLogFile-0-kGph5R0JBk.data fuzzerLogFile-0-kGph5R0JBk.data.yaml future_qpdf_crypt_fuzzer.covreport
future_qpdf_lin_fuzzer fuzzerLogFile-0-VVBKZPbXOg.data fuzzerLogFile-0-VVBKZPbXOg.data.yaml future_qpdf_lin_fuzzer.covreport