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
future_runlength_fuzzer /src/qpdf/fuzz/runlength_fuzzer.cc 53 25 6 6 177 100 runlength_fuzzer.cc
future_lzw_fuzzer /src/qpdf/fuzz/lzw_fuzzer.cc 72 41 10 11 267 182 lzw_fuzzer.cc
future_pngpredictor_fuzzer /src/qpdf/fuzz/pngpredictor_fuzzer.cc 57 29 8 8 195 142 pngpredictor_fuzzer.cc
future_flate_fuzzer /src/qpdf/fuzz/flate_fuzzer.cc 130 416 11 15 2636 1001 flate_fuzzer.cc
pngpredictor_fuzzer /src/qpdf/fuzz/pngpredictor_fuzzer.cc 57 29 8 8 195 142 pngpredictor_fuzzer.cc
future_ascii85_fuzzer /src/qpdf/fuzz/ascii85_fuzzer.cc 41 26 5 7 127 76 ascii85_fuzzer.cc
future_hex_fuzzer /src/qpdf/fuzz/hex_fuzzer.cc 40 28 5 7 123 77 hex_fuzzer.cc
future_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
tiffpredictor_fuzzer /src/qpdf/fuzz/tiffpredictor_fuzzer.cc 79 36 11 13 258 197 tiffpredictor_fuzzer.cc
future_dct_fuzzer /src/qpdf/fuzz/dct_fuzzer.cc 231 517 10 53 3997 1680 dct_fuzzer.cc
ascii85_fuzzer /src/qpdf/fuzz/ascii85_fuzzer.cc 41 26 5 7 127 76 ascii85_fuzzer.cc
hex_fuzzer /src/qpdf/fuzz/hex_fuzzer.cc 40 28 5 7 123 77 hex_fuzzer.cc
flate_fuzzer /src/qpdf/fuzz/flate_fuzzer.cc 130 416 11 15 2636 1001 flate_fuzzer.cc
dct_fuzzer /src/qpdf/fuzz/dct_fuzzer.cc 231 517 10 53 3997 1680 dct_fuzzer.cc
future_qpdf_outlines_fuzzer /src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 1486 2146 41 81 12377 8900 qpdf_outlines_fuzzer.cc
json_fuzzer /src/qpdf/fuzz/json_fuzzer.cc 1368 2153 41 66 11493 8103 json_fuzzer.cc
runlength_fuzzer /src/qpdf/fuzz/runlength_fuzzer.cc 53 25 6 6 177 100 runlength_fuzzer.cc
qpdf_outlines_fuzzer /src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 1486 2143 41 81 12384 8906 qpdf_outlines_fuzzer.cc
future_qpdf_page_fuzzer /src/qpdf/fuzz/qpdf_page_fuzzer.cc 1963 1954 41 101 18202 13125 qpdf_page_fuzzer.cc
future_qpdf_crypt_fuzzer /src/qpdf/fuzz/qpdf_crypt_fuzzer.cc 1924 2055 41 89 18761 12193 qpdf_crypt_fuzzer.cc
future_qpdf_crypt_insecure_fuzzer /src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc 1924 2055 41 89 18758 12192 qpdf_crypt_insecure_fuzzer.cc
qpdf_lin_fuzzer /src/qpdf/fuzz/qpdf_lin_fuzzer.cc 1906 2061 41 89 18612 12109 qpdf_lin_fuzzer.cc
qpdf_crypt_insecure_fuzzer /src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc 1924 2052 41 89 18765 12198 qpdf_crypt_insecure_fuzzer.cc
qpdf_fuzzer /src/qpdf/fuzz/qpdf_fuzzer.cc 1904 2062 41 89 18605 12106 qpdf_fuzzer.cc
future_qpdf_lin_fuzzer /src/qpdf/fuzz/qpdf_lin_fuzzer.cc 1906 2064 41 89 18605 12103 qpdf_lin_fuzzer.cc
future_json_fuzzer /src/qpdf/fuzz/json_fuzzer.cc 1368 2156 41 66 11493 8103 json_fuzzer.cc
qpdf_page_fuzzer /src/qpdf/fuzz/qpdf_page_fuzzer.cc 1963 1951 41 101 18209 13131 qpdf_page_fuzzer.cc
future_qpdf_fuzzer /src/qpdf/fuzz/qpdf_fuzzer.cc 1904 2065 41 89 18598 12100 qpdf_fuzzer.cc
qpdf_crypt_fuzzer /src/qpdf/fuzz/qpdf_crypt_fuzzer.cc 1924 2052 41 89 18768 12199 qpdf_crypt_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: future_runlength_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

['Pl_RunLength::flush_encode()']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_lzw_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
8 8 4 :

['__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_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_flate_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

['inflateInit_']

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

['crc32']

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

['crc32']

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

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

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

['inflateEnd']

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

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

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 :

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

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

['_tr_stored_block', '_tr_align']

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

['Pl_Flate::finish_zopfli()']

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

['deflateEnd']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: 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_ascii85_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
0 0 None 0 0 Pl_ASCII85Decoder::Pl_ASCII85Decoder(charconst*,Pipeline*) call site: 00000 /src/qpdf/libqpdf/Pl_ASCII85Decoder.cc:10
0 0 None 0 0 Pl_ASCII85Decoder::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_ASCII85Decoder.cc:18
0 0 None 0 0 Pl_ASCII85Decoder::finish() call site: 00000 /src/qpdf/libqpdf/Pl_ASCII85Decoder.cc:107

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_hex_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
0 0 None 0 0 Pl_ASCIIHexDecoder::Pl_ASCIIHexDecoder(charconst*,Pipeline*) call site: 00000 /src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc:12
0 0 None 0 0 Pl_ASCIIHexDecoder::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc:20

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_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 :

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

['__cxa_throw', '__cxa_allocate_exception', 'std::out_of_range::out_of_range[abi:ne180100](char const*)', '__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] 5 5.81%
yellow [10:29] 5 5.81%
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: 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 :

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

['__cxa_throw', '__cxa_allocate_exception', 'std::out_of_range::out_of_range[abi:ne180100](char const*)', '__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: future_dct_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

['do_sarray_io']

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

['do_barray_io']

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

['__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:288
5 5 1 :

['jpeg_destroy_compress']

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

['out_of_memory']

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

['__isoc99_sscanf']

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

['out_of_memory']

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

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

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

['jpeg_mem_term']

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

['Pipeline::next() const']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: 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: 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: flate_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

['inflateInit_']

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

['crc32']

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

['crc32']

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

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

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

['inflateEnd']

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

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

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 :

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

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

['_tr_stored_block', '_tr_align']

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

['Pl_Flate::finish_zopfli()']

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

['deflateEnd']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: dct_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

['do_sarray_io']

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

['do_barray_io']

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

['__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:288
5 5 1 :

['jpeg_destroy_compress']

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

['out_of_memory']

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

['__isoc99_sscanf']

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

['out_of_memory']

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

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

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

['jpeg_mem_term']

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

['Pipeline::next() const']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: 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 699 20.5%
gold [1:9] 90 2.65%
yellow [10:29] 82 2.41%
greenyellow [30:49] 26 0.76%
lawngreen 50+ 2498 73.5%
All colors 3395 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
21415 136685 25 :

['_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'std::__1::operator==[abi:ne180100](std::__1::__list_iterator const&, std::__1::__list_iterator const&)', 'std::__1::list >::end[abi:ne180100]()', 'QPDFObjectHandle::getArrayNItems() const', 'QPDFObjectHandle::operator=(QPDFObjectHandle const&)', 'QPDF::makeIndirectObject(QPDFObjectHandle)', 'NNTreeIterator::setItemNumber(QPDFObjectHandle const&, int)', 'NNTreeIterator::resetLimits(QPDFObjectHandle, std::__1::__list_iterator )', 'std::__1::list >::begin[abi:ne180100]()', 'QPDFObjectHandle::removeKey(std::__1::basic_string , std::__1::allocator > const&)', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'NNTreeIterator::PathElement& std::__1::list >::emplace_front (QPDFObjectHandle&, int&&)', 'QPDFObjectHandle::eraseItem(int)', 'QPDFObjectHandle::QPDFObjectHandle(QPDFObjectHandle const&)', 'NNTreeIterator::split(QPDFObjectHandle, std::__1::__list_iterator )', 'QPDFObjectHandle::insertItem(int, QPDFObjectHandle const&)', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'QTC::TC(char const*, char const*, int)', 'QPDFObjectHandle::newDictionary()', 'QPDFObjectHandle::appendItem(QPDFObjectHandle const&)', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::newArray()', 'std::__1::__list_iterator ::operator++[abi:ne180100]()', 'std::__1::__list_iterator ::operator->[abi:ne180100]() const', 'std::__1::__list_iterator ::operator--[abi:ne180100]()']

21543 136813 NNTreeIterator::split(QPDFObjectHandle,std::__1::__list_iterator ) call site: 00000 /src/qpdf/libqpdf/NNTree.cc:282
14444 199616 21 :

['NNTreeImpl::warn(QPDFObjectHandle&, std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::operator==[abi:ne180100](std::__1::__list_iterator const&, std::__1::__list_iterator const&)', 'std::__1::list >::end[abi:ne180100]()', 'QPDFObjectHandle::getArrayNItems() const', 'QPDFObjectHandle::operator=(QPDFObjectHandle const&)', 'std::__1::list >::begin[abi:ne180100]()', 'QPDFObjectHandle::~QPDFObjectHandle()', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'QPDFObjectHandle::isArray() const', 'QPDFObjectHandle::isDictionary() const', 'QPDFObjectHandle::QPDFObjectHandle(QPDFObjectHandle const&)', 'QPDFObjectHandle::isSameObjectAs(QPDFObjectHandle const&) const', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::operator=(QPDFObjectHandle&&)', 'QPDFObjectHandle::appendItem(QPDFObjectHandle const&)', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::QPDFObjectHandle()', 'QPDFObjectHandle::newArray()', 'qpdf::BaseHandle::operator bool() const', 'std::__1::__list_iterator ::operator->[abi:ne180100]() const', 'std::__1::__list_iterator ::operator--[abi:ne180100]()']

14444 206731 NNTreeIterator::resetLimits(QPDFObjectHandle,std::__1::__list_iterator ) call site: 00000 /src/qpdf/libqpdf/NNTree.cc:160
7109 7109 1 :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

['deflateEnd']

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

['deflateEnd']

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

Runtime coverage analysis

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

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 7
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 1
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 2
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/libqpdf/QPDF.cc 18
/src/qpdf/libqpdf/QPDF_objects.cc 45
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 13
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 40
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 25
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 18
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 59
/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/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 3
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2
/src/qpdf/libqpdf/QPDFOutlineDocumentHelper.cc 3
/src/qpdf/include/qpdf/QPDFDocumentHelper.hh 1
/src/qpdf/include/qpdf/QPDFOutlineDocumentHelper.hh 3
/src/qpdf/include/qpdf/QPDFOutlineObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFOutlineObjectHelper.cc 5
/src/qpdf/include/qpdf/QPDFObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFObjectHelper.cc 1
/src/qpdf/libqpdf/QPDFDocumentHelper.cc 1
/src/qpdf/libqpdf/QPDF_String.cc 2
/src/qpdf/libqpdf/QPDFNameTreeObjectHelper.cc 7
/src/qpdf/libqpdf/NNTree.cc 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 2322 75.5%
gold [1:9] 25 0.81%
yellow [10:29] 59 1.91%
greenyellow [30:49] 8 0.26%
lawngreen 50+ 661 21.4%
All colors 3075 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
107419 508526 62 :

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

107419 508526 QPDF::EncryptionParameters::initialize(QPDF&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:657
7111 7111 1 :

['QPDF::pushInheritedAttributesToPage()']

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

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

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

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

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

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

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

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

7109 21315 QPDF_Array*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7109 7192 3 :

['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&)', 'std::__1::unique_ptr >::operator->[abi:ne180100]() const']

7161 71318 QPDF::read_xrefTable(longlong) call site: 00000 /src/qpdf/libqpdf/QPDF_objects.cc:730
7109 7113 2 :

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

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

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

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

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

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

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

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

['QPDF::getAllPages()']

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

Runtime coverage analysis

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

Files reached

filename functions hit
/src/qpdf/fuzz/json_fuzzer.cc 4
/src/qpdf/libqpdf/JSON.cc 28
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/libqpdf/QUtil.cc 12
/src/qpdf/include/qpdf/QIntC.hh 34
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/include/qpdf/JSON.hh 7
/src/qpdf/libqpdf/QPDF.cc 23
/src/qpdf/libqpdf/QPDFTokenizer.cc 34
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/QPDF_json.cc 5
/src/qpdf/libqpdf/QPDF_objects.cc 45
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 12
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 58
/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/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Flate.cc 1
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 3
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2

Fuzzer: 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: 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 586 17.2%
gold [1:9] 93 2.73%
yellow [10:29] 70 2.06%
greenyellow [30:49] 17 0.50%
lawngreen 50+ 2631 77.4%
All colors 3397 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
7109 7109 1 :

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

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

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

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

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

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

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

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

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

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

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

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

['deflateEnd']

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

['deflateEnd']

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

['Pl_RunLength::flush_encode()']

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

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

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

['sha384_short']

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

Runtime coverage analysis

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

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 7
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 1
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 2
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QIntC.hh 40
/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 45
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 13
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 25
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 18
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 59
/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/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 3
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2
/src/qpdf/libqpdf/QPDFOutlineDocumentHelper.cc 3
/src/qpdf/include/qpdf/QPDFDocumentHelper.hh 1
/src/qpdf/include/qpdf/QPDFOutlineDocumentHelper.hh 3
/src/qpdf/include/qpdf/QPDFOutlineObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFOutlineObjectHelper.cc 5
/src/qpdf/include/qpdf/QPDFObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFObjectHelper.cc 1
/src/qpdf/libqpdf/QPDFDocumentHelper.cc 1
/src/qpdf/libqpdf/QPDF_String.cc 2
/src/qpdf/libqpdf/QPDFNameTreeObjectHelper.cc 7
/src/qpdf/libqpdf/NNTree.cc 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 885 17.1%
gold [1:9] 108 2.09%
yellow [10:29] 96 1.86%
greenyellow [30:49] 46 0.89%
lawngreen 50+ 4017 77.9%
All colors 5152 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
1924 2139 12 :

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

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

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

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

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

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

30 7139 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:272
10 7242 8 :

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

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

Runtime coverage analysis

Covered functions
1210
Functions that are reachable but not covered
203
Reachable functions
1963
Percentage of reachable functions covered
89.66%
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 9
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 1
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 2
/src/qpdf/libqpdf/BufferInputSource.cc 3
/src/qpdf/include/qpdf/InputSource.hh 4
/src/qpdf/libqpdf/QPDF.cc 20
/src/qpdf/libqpdf/QPDF_objects.cc 46
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 13
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 45
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 44
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 4
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 28
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 30
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 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 108
/src/qpdf/libqpdf/QPDFXRefEntry.cc 3
/src/qpdf/libqpdf/QPDF_Dictionary.cc 14
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 19
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2
/src/qpdf/libqpdf/QPDFPageDocumentHelper.cc 4
/src/qpdf/include/qpdf/QPDFDocumentHelper.hh 1
/src/qpdf/libqpdf/QPDFPageLabelDocumentHelper.cc 3
/src/qpdf/include/qpdf/QPDFPageLabelDocumentHelper.hh 2
/src/qpdf/libqpdf/QPDFDocumentHelper.cc 1
/src/qpdf/libqpdf/QPDFOutlineDocumentHelper.cc 4
/src/qpdf/include/qpdf/QPDFOutlineDocumentHelper.hh 3
/src/qpdf/include/qpdf/QPDFOutlineObjectHelper.hh 3
/src/qpdf/libqpdf/QPDFOutlineObjectHelper.cc 5
/src/qpdf/include/qpdf/QPDFObjectHelper.hh 6
/src/qpdf/libqpdf/QPDFObjectHelper.cc 1
/src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc 8
/src/qpdf/include/qpdf/QPDFAcroFormDocumentHelper.hh 2
/src/qpdf/libqpdf/QPDFFormFieldObjectHelper.cc 30
/src/qpdf/include/qpdf/QPDFFormFieldObjectHelper.hh 2
/src/qpdf/libqpdf/QPDF_String.cc 6
/src/qpdf/include/qpdf/QPDFPageDocumentHelper.hh 1
/src/qpdf/include/qpdf/QPDFPageObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFPageObjectHelper.cc 9
/src/qpdf/include/qpdf/QPDFAnnotationObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFAnnotationObjectHelper.cc 7
/src/qpdf/libqpdf/Pl_QPDFTokenizer.cc 3
/src/qpdf/libqpdf/QPDFMatrix.cc 11
/src/qpdf/libqpdf/QPDFNumberTreeObjectHelper.cc 7
/src/qpdf/libqpdf/NNTree.cc 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: 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 995 21.0%
gold [1:9] 135 2.86%
yellow [10:29] 105 2.22%
greenyellow [30:49] 75 1.59%
lawngreen 50+ 3406 72.2%
All colors 4716 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
7438 7438 1 :

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

14831 44409 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2173
607 1113 4 :

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

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

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

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

['QPDFWriter::computeDeterministicIDData()']

79 7702 QPDFWriter::writeTrailer(QPDFWriter::trailer_e,int,bool,longlong,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1301
34 49898 28 :

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

50 57042 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1884
34 28498 16 :

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

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

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

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

['do_barray_io']

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

['crc32']

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

['crc32']

21 21 read_buf call site: 03688 /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', 'QPDFExc::QPDFExc(QPDFExc const&)', '__cxa_free_exception']

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

Runtime coverage analysis

Covered functions
1238
Functions that are reachable but not covered
294
Reachable functions
1924
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_crypt_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 51
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 30
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 22
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 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/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 51
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 81
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: future_qpdf_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 1660 35.1%
gold [1:9] 133 2.81%
yellow [10:29] 119 2.52%
greenyellow [30:49] 60 1.27%
lawngreen 50+ 2745 58.1%
All colors 4717 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
10689 10689 1 :

['QPDFWriter::writeLinearized()']

10691 10733 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2279
9167 9167 1 :

['QPDFWriter::writeObjectStream(QPDFObjectHandle)']

9175 9179 QPDFWriter::writeObject(QPDFObjectHandle,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1817
7438 7438 1 :

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

22196 44409 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2173
7277 7277 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7293 34667 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3044
7126 7128 9 :

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

7170 71254 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2946
7109 7109 1 :

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

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

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

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

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

7109 7113 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:475
407 407 1 :

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

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

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

252 474 inflate call site: 03753 /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
34 49898 28 :

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

50 57042 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1884

Runtime coverage analysis

Covered functions
1160
Functions that are reachable but not covered
435
Reachable functions
1924
Percentage of reachable functions covered
77.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_crypt_insecure_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 51
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 30
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 22
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 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/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 51
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 81
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: qpdf_lin_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1056 22.6%
gold [1:9] 114 2.44%
yellow [10:29] 136 2.91%
greenyellow [30:49] 62 1.32%
lawngreen 50+ 3300 70.6%
All colors 4668 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
7109 7109 1 :

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

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

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

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

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

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

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

252 474 inflate call site: 03704 /src/zlib/inflate.c:817
88 163595 11 :

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

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

['do_sarray_io']

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

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

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

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

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

['do_barray_io']

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

['crc32']

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

['crc32']

21 21 read_buf call site: 03640 /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
1235
Functions that are reachable but not covered
284
Reachable functions
1906
Percentage of reachable functions covered
85.1%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

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

Fuzzer: qpdf_crypt_insecure_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1666 35.3%
gold [1:9] 99 2.09%
yellow [10:29] 119 2.52%
greenyellow [30:49] 63 1.33%
lawngreen 50+ 2772 58.7%
All colors 4719 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
10689 10689 1 :

['QPDFWriter::writeLinearized()']

10691 10733 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2279
9167 9167 1 :

['QPDFWriter::writeObjectStream(QPDFObjectHandle)']

9175 9179 QPDFWriter::writeObject(QPDFObjectHandle,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1817
7438 7438 1 :

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

22196 44409 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2173
7277 7277 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7293 34667 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3044
7126 7128 9 :

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

7170 71254 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2946
7109 7109 1 :

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

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

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

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

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

7109 7113 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:475
407 407 1 :

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

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

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

252 474 inflate call site: 03755 /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
34 49898 28 :

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

50 57042 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1884

Runtime coverage analysis

Covered functions
1155
Functions that are reachable but not covered
435
Reachable functions
1924
Percentage of reachable functions covered
77.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_crypt_insecure_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 51
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 30
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 22
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 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/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 51
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 81
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: qpdf_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1489 31.9%
gold [1:9] 129 2.76%
yellow [10:29] 66 1.41%
greenyellow [30:49] 72 1.54%
lawngreen 50+ 2907 62.3%
All colors 4663 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
10689 10689 1 :

['QPDFWriter::writeLinearized()']

10691 10733 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2279
7438 7438 1 :

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

14831 44409 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2173
7277 7277 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7552 34667 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3044
7126 7128 9 :

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

7170 71254 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2946
1117 1117 3 :

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

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

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

1015 31224 QPDFWriter::writeObjectStream(QPDFObjectHandle) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1777
259 259 1 :

['QPDFWriter::writeEncryptionDictionary()']

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

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

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

['deflateInit_']

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

['do_sarray_io']

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

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

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

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

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

Runtime coverage analysis

Covered functions
1182
Functions that are reachable but not covered
392
Reachable functions
1904
Percentage of reachable functions covered
79.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/qpdf_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 51
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 30
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 21
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 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/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 45
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 78
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: future_qpdf_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 1061 22.7%
gold [1:9] 113 2.42%
yellow [10:29] 104 2.22%
greenyellow [30:49] 61 1.30%
lawngreen 50+ 3327 71.3%
All colors 4666 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
7109 7109 1 :

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

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

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

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

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

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

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

252 474 inflate call site: 03702 /src/zlib/inflate.c:817
88 163595 11 :

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

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

['do_sarray_io']

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

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

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

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

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

['do_barray_io']

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

['crc32']

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

['crc32']

21 21 read_buf call site: 03638 /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
1235
Functions that are reachable but not covered
290
Reachable functions
1906
Percentage of reachable functions covered
84.78%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

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

Fuzzer: future_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 2322 75.5%
gold [1:9] 25 0.81%
yellow [10:29] 39 1.26%
greenyellow [30:49] 32 1.04%
lawngreen 50+ 657 21.3%
All colors 3075 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
107419 508526 62 :

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

107419 508526 QPDF::EncryptionParameters::initialize(QPDF&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:657
7111 7111 1 :

['QPDF::pushInheritedAttributesToPage()']

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

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

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

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

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

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

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

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

7109 21315 QPDF_Array*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7109 7192 3 :

['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&)', 'std::__1::unique_ptr >::operator->[abi:ne180100]() const']

7161 71318 QPDF::read_xrefTable(longlong) call site: 00000 /src/qpdf/libqpdf/QPDF_objects.cc:730
7109 7113 2 :

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

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

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

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

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

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

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

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

['QPDF::getAllPages()']

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

Runtime coverage analysis

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

Files reached

filename functions hit
/src/qpdf/fuzz/json_fuzzer.cc 4
/src/qpdf/libqpdf/JSON.cc 28
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/libqpdf/QUtil.cc 12
/src/qpdf/include/qpdf/QIntC.hh 34
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/include/qpdf/JSON.hh 7
/src/qpdf/libqpdf/QPDF.cc 23
/src/qpdf/libqpdf/QPDFTokenizer.cc 34
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/QPDF_json.cc 5
/src/qpdf/libqpdf/QPDF_objects.cc 45
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 12
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 58
/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/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Flate.cc 1
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 3
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2

Fuzzer: qpdf_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 896 17.3%
gold [1:9] 105 2.03%
yellow [10:29] 104 2.01%
greenyellow [30:49] 43 0.83%
lawngreen 50+ 4006 77.7%
All colors 5154 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
1924 2139 12 :

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

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

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

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

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

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

30 7139 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:272
10 7242 8 :

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

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

Runtime coverage analysis

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

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_page_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 5
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 1
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 2
/src/qpdf/libqpdf/BufferInputSource.cc 3
/src/qpdf/include/qpdf/InputSource.hh 4
/src/qpdf/include/qpdf/QIntC.hh 45
/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 46
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 13
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 44
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 4
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 28
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 30
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 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 108
/src/qpdf/libqpdf/QPDFXRefEntry.cc 3
/src/qpdf/libqpdf/QPDF_Dictionary.cc 14
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 19
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 2
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2
/src/qpdf/libqpdf/QPDFPageDocumentHelper.cc 4
/src/qpdf/include/qpdf/QPDFDocumentHelper.hh 1
/src/qpdf/libqpdf/QPDFPageLabelDocumentHelper.cc 3
/src/qpdf/include/qpdf/QPDFPageLabelDocumentHelper.hh 2
/src/qpdf/libqpdf/QPDFDocumentHelper.cc 1
/src/qpdf/libqpdf/QPDFOutlineDocumentHelper.cc 4
/src/qpdf/include/qpdf/QPDFOutlineDocumentHelper.hh 3
/src/qpdf/include/qpdf/QPDFOutlineObjectHelper.hh 3
/src/qpdf/libqpdf/QPDFOutlineObjectHelper.cc 5
/src/qpdf/include/qpdf/QPDFObjectHelper.hh 6
/src/qpdf/libqpdf/QPDFObjectHelper.cc 1
/src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc 8
/src/qpdf/include/qpdf/QPDFAcroFormDocumentHelper.hh 2
/src/qpdf/libqpdf/QPDFFormFieldObjectHelper.cc 30
/src/qpdf/include/qpdf/QPDFFormFieldObjectHelper.hh 2
/src/qpdf/libqpdf/QPDF_String.cc 6
/src/qpdf/include/qpdf/QPDFPageDocumentHelper.hh 1
/src/qpdf/include/qpdf/QPDFPageObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFPageObjectHelper.cc 9
/src/qpdf/include/qpdf/QPDFAnnotationObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFAnnotationObjectHelper.cc 7
/src/qpdf/libqpdf/Pl_QPDFTokenizer.cc 3
/src/qpdf/libqpdf/QPDFMatrix.cc 11
/src/qpdf/libqpdf/QPDFNumberTreeObjectHelper.cc 7
/src/qpdf/libqpdf/NNTree.cc 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: 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 1496 32.0%
gold [1:9] 128 2.74%
yellow [10:29] 105 2.25%
greenyellow [30:49] 54 1.15%
lawngreen 50+ 2878 61.7%
All colors 4661 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
10689 10689 1 :

['QPDFWriter::writeLinearized()']

10691 10733 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2279
7438 7438 1 :

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

14831 44409 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2173
7277 7277 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7552 34667 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3044
7126 7128 9 :

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

7170 71254 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2946
1117 1117 3 :

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

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

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

1015 31224 QPDFWriter::writeObjectStream(QPDFObjectHandle) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1777
259 259 1 :

['QPDFWriter::writeEncryptionDictionary()']

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

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

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

['deflateInit_']

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

['do_sarray_io']

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

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

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

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

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: 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 1001 21.2%
gold [1:9] 148 3.13%
yellow [10:29] 98 2.07%
greenyellow [30:49] 66 1.39%
lawngreen 50+ 3405 72.1%
All colors 4718 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
7438 7438 1 :

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

14831 44409 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2173
607 1113 4 :

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

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

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

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

['QPDFWriter::computeDeterministicIDData()']

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

['do_sarray_io']

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

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

50 57042 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1884
34 28498 16 :

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

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

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

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

['do_barray_io']

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

['crc32']

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

['crc32']

21 21 read_buf call site: 03690 /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
1235
Functions that are reachable but not covered
294
Reachable functions
1924
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_crypt_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 13
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 10
/src/qpdf/libqpdf/BufferInputSource.cc 1
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QIntC.hh 47
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 51
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 30
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 9
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 22
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 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/qpdf/Pipeline_private.hh 15
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 51
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 8
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 81
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_MD5.cc 3
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1
/src/zlib/deflate.c 16
/src/zlib/crc32.c 5
/src/zlib/adler32.c 2
/src/zlib/trees.c 20
/src/zlib/inflate.c 10
/src/zlib/inftrees.c 1
/src/zlib/inffast.c 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 3
/src/qpdf/libqpdf/qpdf/Pl_RC4.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Analyses and suggestions

Optimal target analysis

Remaining optimal interesting functions

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

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

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

Functions statically reachable by fuzzers
54.0%
1664 / 3073
Cyclomatic complexity statically reachable by fuzzers
71.0%
24222 / 34187

All functions overview

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

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

Fuzz engine guidance

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

/src/qpdf/fuzz/runlength_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/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/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/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/pngpredictor_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/ascii85_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/hex_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/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/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/dct_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/ascii85_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/hex_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/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/dct_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/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)', 'NNTreeIterator::split(QPDFObjectHandle, std::__1::__list_iterator)', 'NNTreeIterator::resetLimits(QPDFObjectHandle, std::__1::__list_iterator)', 'QPDF::EncryptionParameters::interpretCF(QPDFObjectHandle const&) const', 'qpdf::Stream::pipeStreamData(Pipeline*, bool*, int, qpdf_stream_decode_level_e, bool, bool)', 'QPDFObjectHandle::hasKey(std::__1::basic_string, std::__1::allocator > const&) const', 'qpdf::Tokenizer::inBeforeToken(char)', 'Pl_AES_PDF::flush(bool)', 'unsigned long QIntC::to_size(long const&)', 'QPDF_Dictionary* qpdf::BaseHandle::as() const']

/src/qpdf/fuzz/json_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/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/qpdf_outlines_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/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()', '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_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/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)', 'QPDFWriter::writeStandard()', 'QPDFWriter::writeObject(QPDFObjectHandle, int)', 'QPDFWriter::write()', 'BitWriter::flush()', 'qpdf::pl::Count::write(unsigned char const*, unsigned long)', 'QPDFWriter::writeObject(QPDFObjectHandle, int)', 'BitWriter::writeBits(unsigned long long, unsigned long)']

/src/qpdf/fuzz/qpdf_lin_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_lin_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

-focus_function=['QPDFWriter::write()', 'QPDFWriter::writeLinearized()', 'ObjTable::large_element(unsigned long)', 'QPDF::EncryptionParameters::interpretCF(QPDFObjectHandle const&) const', 'Pl_AES_PDF::write(unsigned char const*, unsigned long)', 'qpdf::BaseHandle::copy(bool) const', 'QPDFWriter::unparseObject(QPDFObjectHandle, int, int, unsigned long, bool)', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'QPDFWriter::writeLinearized()', 'qpdf::BaseHandle::unparse() 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=['QPDFObjectHandle::newDictionary(std::__1::map, std::__1::allocator >, QPDFObjectHandle, std::__1::less, std::__1::allocator > >, std::__1::allocator, std::__1::allocator > const, QPDFObjectHandle> > > const&)', 'QUtil::hex_decode(std::__1::basic_string, std::__1::allocator > const&)', 'QPDFObjectHandle::parse(QPDF*, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&)', 'QPDF::EncryptionParameters::initialize(QPDF&)', 'QPDFObjectHandle::removeKey(std::__1::basic_string, std::__1::allocator > const&)', 'QPDFObjectHandle::getIntValueAsInt() const', 'QPDFObject::move_to(std::__1::shared_ptr&, bool)', 'std::__1::shared_ptr QPDFObject::create, std::__1::allocator >&>(std::__1::basic_string, std::__1::allocator >&)', 'QPDFObjectHandle::newArray(std::__1::vector > const&)', 'QPDFLogger::defaultLogger()']

/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()', 'qpdf::BaseHandle::copy(bool) const', 'void QIntC::range_check_error(long long const&, long long const&)', 'qpdf::Tokenizer::inBeforeToken(char)', '(anonymous namespace)::JSONParser::getToken()', '(anonymous namespace)::JSONParser::getToken()']

/src/qpdf/fuzz/qpdf_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_crypt_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

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% ['future_flate_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'flate_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_lin_fuzzer', 'qpdf_outlines_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_lin_fuzzer', 'future_qpdf_outlines_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_page_fuzzer', 'future_qpdf_fuzzer']
deflate 257 74 28.79% ['future_flate_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'flate_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_fuzzer']
output_pass_setup 45 10 22.22% ['dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'future_dct_fuzzer', 'future_qpdf_fuzzer']
start_pass 173 39 22.54% ['dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'future_dct_fuzzer', 'future_qpdf_fuzzer']
ycc_rgb_convert 36 8 22.22% ['dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'future_dct_fuzzer', 'future_qpdf_fuzzer']
jpeg_resync_to_restart 34 6 17.64% ['dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'future_dct_fuzzer', 'future_qpdf_fuzzer']
jpeg_core_output_dimensions 130 32 24.61% ['dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'future_dct_fuzzer', 'future_qpdf_fuzzer']
use_merged_upsample 38 6 15.78% ['dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'future_dct_fuzzer', 'future_qpdf_fuzzer']
jinit_d_post_controller 39 20 51.28% ['dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'future_dct_fuzzer', 'future_qpdf_fuzzer']
j12init_d_post_controller 40 20 50.0% ['dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'future_dct_fuzzer', 'future_qpdf_fuzzer']
access_virt_sarray 59 31 52.54% ['dct_fuzzer', 'qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_lin_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'future_dct_fuzzer', 'future_qpdf_fuzzer']
qpdf::BaseHandle::unparse()const 74 16 21.62% ['qpdf_crypt_insecure_fuzzer', 'qpdf_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_page_fuzzer', 'future_qpdf_lin_fuzzer', 'future_qpdf_crypt_fuzzer', 'qpdf_lin_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_page_fuzzer', 'future_qpdf_fuzzer']
QPDFWriter::interpretR3EncryptionParameters(bool,bool,bool,bool,bool,bool,qpdf_r3_print_e,qpdf_r3_modify_e) 46 16 34.78% ['qpdf_crypt_insecure_fuzzer', 'future_qpdf_crypt_insecure_fuzzer', 'qpdf_crypt_fuzzer', 'future_qpdf_crypt_fuzzer']

Files and Directories in report

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

Files in report

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

Directories in report

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

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
future_runlength_fuzzer fuzzerLogFile-0-75i26RgLAN.data fuzzerLogFile-0-75i26RgLAN.data.yaml future_runlength_fuzzer.covreport
future_lzw_fuzzer fuzzerLogFile-0-Uf6ITYQS5D.data fuzzerLogFile-0-Uf6ITYQS5D.data.yaml future_lzw_fuzzer.covreport
future_pngpredictor_fuzzer fuzzerLogFile-0-FHhatPgdVb.data fuzzerLogFile-0-FHhatPgdVb.data.yaml future_pngpredictor_fuzzer.covreport
future_flate_fuzzer fuzzerLogFile-0-bYrC4KjwF6.data fuzzerLogFile-0-bYrC4KjwF6.data.yaml future_flate_fuzzer.covreport
pngpredictor_fuzzer fuzzerLogFile-0-OnCje7LEXC.data fuzzerLogFile-0-OnCje7LEXC.data.yaml pngpredictor_fuzzer.covreport
future_ascii85_fuzzer fuzzerLogFile-0-uX3rBXnnNK.data fuzzerLogFile-0-uX3rBXnnNK.data.yaml future_ascii85_fuzzer.covreport
future_hex_fuzzer fuzzerLogFile-0-FDFV6sHG4C.data fuzzerLogFile-0-FDFV6sHG4C.data.yaml future_hex_fuzzer.covreport
future_tiffpredictor_fuzzer fuzzerLogFile-0-qX9CZxPpPg.data fuzzerLogFile-0-qX9CZxPpPg.data.yaml future_tiffpredictor_fuzzer.covreport
lzw_fuzzer fuzzerLogFile-0-Q5zdQ8Ivf2.data fuzzerLogFile-0-Q5zdQ8Ivf2.data.yaml lzw_fuzzer.covreport
tiffpredictor_fuzzer fuzzerLogFile-0-clCL0R8Hq3.data fuzzerLogFile-0-clCL0R8Hq3.data.yaml tiffpredictor_fuzzer.covreport
future_dct_fuzzer fuzzerLogFile-0-DbUppX7nzO.data fuzzerLogFile-0-DbUppX7nzO.data.yaml future_dct_fuzzer.covreport
ascii85_fuzzer fuzzerLogFile-0-hkAoFV9CVM.data fuzzerLogFile-0-hkAoFV9CVM.data.yaml ascii85_fuzzer.covreport
hex_fuzzer fuzzerLogFile-0-U94psSlj3B.data fuzzerLogFile-0-U94psSlj3B.data.yaml hex_fuzzer.covreport
flate_fuzzer fuzzerLogFile-0-DtSmWlGQFK.data fuzzerLogFile-0-DtSmWlGQFK.data.yaml flate_fuzzer.covreport
dct_fuzzer fuzzerLogFile-0-ADdA9TOZsb.data fuzzerLogFile-0-ADdA9TOZsb.data.yaml dct_fuzzer.covreport
future_qpdf_outlines_fuzzer fuzzerLogFile-0-wpE51xolAN.data fuzzerLogFile-0-wpE51xolAN.data.yaml future_qpdf_outlines_fuzzer.covreport
json_fuzzer fuzzerLogFile-0-5eblSAbJgj.data fuzzerLogFile-0-5eblSAbJgj.data.yaml json_fuzzer.covreport
runlength_fuzzer fuzzerLogFile-0-RPnsxFiOAE.data fuzzerLogFile-0-RPnsxFiOAE.data.yaml runlength_fuzzer.covreport
qpdf_outlines_fuzzer fuzzerLogFile-0-pvzZgFxNJQ.data fuzzerLogFile-0-pvzZgFxNJQ.data.yaml qpdf_outlines_fuzzer.covreport
future_qpdf_page_fuzzer fuzzerLogFile-0-HoZP24Wokp.data fuzzerLogFile-0-HoZP24Wokp.data.yaml future_qpdf_page_fuzzer.covreport
future_qpdf_crypt_fuzzer fuzzerLogFile-0-Qm5cecKVSX.data fuzzerLogFile-0-Qm5cecKVSX.data.yaml future_qpdf_crypt_fuzzer.covreport
future_qpdf_crypt_insecure_fuzzer fuzzerLogFile-0-R48Oqishg9.data fuzzerLogFile-0-R48Oqishg9.data.yaml future_qpdf_crypt_insecure_fuzzer.covreport
qpdf_lin_fuzzer fuzzerLogFile-0-WGpyleJubn.data fuzzerLogFile-0-WGpyleJubn.data.yaml qpdf_lin_fuzzer.covreport
qpdf_crypt_insecure_fuzzer fuzzerLogFile-0-VPNmHZHjHI.data fuzzerLogFile-0-VPNmHZHjHI.data.yaml qpdf_crypt_insecure_fuzzer.covreport
qpdf_fuzzer fuzzerLogFile-0-N8JFAOZkBs.data fuzzerLogFile-0-N8JFAOZkBs.data.yaml qpdf_fuzzer.covreport
future_qpdf_lin_fuzzer fuzzerLogFile-0-TwwZ5VuLiT.data fuzzerLogFile-0-TwwZ5VuLiT.data.yaml future_qpdf_lin_fuzzer.covreport
future_json_fuzzer fuzzerLogFile-0-mQnoH7o3va.data fuzzerLogFile-0-mQnoH7o3va.data.yaml future_json_fuzzer.covreport
qpdf_page_fuzzer fuzzerLogFile-0-6Y1AAViLpb.data fuzzerLogFile-0-6Y1AAViLpb.data.yaml qpdf_page_fuzzer.covreport
future_qpdf_fuzzer fuzzerLogFile-0-UHnnPIyt6S.data fuzzerLogFile-0-UHnnPIyt6S.data.yaml future_qpdf_fuzzer.covreport
qpdf_crypt_fuzzer fuzzerLogFile-0-LgRJoOguAa.data fuzzerLogFile-0-LgRJoOguAa.data.yaml qpdf_crypt_fuzzer.covreport