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_ascii85_fuzzer /src/qpdf/fuzz/ascii85_fuzzer.cc 38 28 6 7 133 77 ascii85_fuzzer.cc
pngpredictor_fuzzer /src/qpdf/fuzz/pngpredictor_fuzzer.cc 55 30 8 8 208 151 pngpredictor_fuzzer.cc
future_runlength_fuzzer /src/qpdf/fuzz/runlength_fuzzer.cc 44 26 7 6 172 103 runlength_fuzzer.cc
future_hex_fuzzer /src/qpdf/fuzz/hex_fuzzer.cc 38 28 6 7 132 81 hex_fuzzer.cc
future_lzw_fuzzer /src/qpdf/fuzz/lzw_fuzzer.cc 65 46 10 11 270 180 lzw_fuzzer.cc
runlength_fuzzer /src/qpdf/fuzz/runlength_fuzzer.cc 44 26 7 6 172 103 runlength_fuzzer.cc
future_tiffpredictor_fuzzer /src/qpdf/fuzz/tiffpredictor_fuzzer.cc 72 37 11 12 266 200 tiffpredictor_fuzzer.cc
ascii85_fuzzer /src/qpdf/fuzz/ascii85_fuzzer.cc 38 28 6 7 133 77 ascii85_fuzzer.cc
future_pngpredictor_fuzzer /src/qpdf/fuzz/pngpredictor_fuzzer.cc 55 30 8 8 208 151 pngpredictor_fuzzer.cc
tiffpredictor_fuzzer /src/qpdf/fuzz/tiffpredictor_fuzzer.cc 72 37 11 12 266 200 tiffpredictor_fuzzer.cc
lzw_fuzzer /src/qpdf/fuzz/lzw_fuzzer.cc 65 46 10 11 270 180 lzw_fuzzer.cc
hex_fuzzer /src/qpdf/fuzz/hex_fuzzer.cc 38 28 6 7 132 81 hex_fuzzer.cc
flate_fuzzer /src/qpdf/fuzz/flate_fuzzer.cc 123 77 11 15 2640 1023 flate_fuzzer.cc
future_flate_fuzzer /src/qpdf/fuzz/flate_fuzzer.cc 123 77 11 15 2640 1023 flate_fuzzer.cc
dct_fuzzer /src/qpdf/fuzz/dct_fuzzer.cc 241 531 10 56 3741 1588 dct_fuzzer.cc
future_dct_fuzzer /src/qpdf/fuzz/dct_fuzzer.cc 241 531 10 56 3741 1588 dct_fuzzer.cc
future_json_fuzzer /src/qpdf/fuzz/json_fuzzer.cc 1206 2078 37 71 10186 7672 json_fuzzer.cc
json_fuzzer /src/qpdf/fuzz/json_fuzzer.cc 1204 2077 37 71 10198 7675 json_fuzzer.cc
future_qpdf_fuzzer /src/qpdf/fuzz/qpdf_fuzzer.cc 2195 1910 37 113 20709 15004 qpdf_fuzzer.cc
qpdf_fuzzer /src/qpdf/fuzz/qpdf_fuzzer.cc 2191 1910 37 113 20724 15005 qpdf_fuzzer.cc

Fuzzer details

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 4 13.3%
gold [1:9] 2 6.66%
yellow [10:29] 2 6.66%
greenyellow [30:49] 1 3.33%
lawngreen 50+ 21 70.0%
All colors 30 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::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_ASCII85Decoder.cc:18

Runtime coverage analysis

Covered functions
16
Functions that are reachable but not covered
11
Reachable functions
38
Percentage of reachable functions covered
71.05%
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 2
/src/qpdf/libqpdf/Pl_ASCII85Decoder.cc 4
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_ASCII85Decoder.hh 1
/src/qpdf/include/qpdf/Pipeline.hh 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 11 25.0%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 33 75.0%
All colors 44 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
28 28 1 :

['Pl_PNGFilter::encodeRow()']

28 28 Pl_PNGFilter::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:100
8 8 4 :

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

8 10 Pl_PNGFilter::Pl_PNGFilter(charconst*,Pipeline*,Pl_PNGFilter::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:49
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:36
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:46

Runtime coverage analysis

Covered functions
25
Functions that are reachable but not covered
10
Reachable functions
55
Percentage of reachable functions covered
81.82%
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 2
/src/qpdf/libqpdf/Pl_PNGFilter.cc 12
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/include/qpdf/Pipeline.hh 1
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.hh 1

Fuzzer: future_runlength_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 19 57.5%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 14 42.4%
All colors 33 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
41 41 1 :

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

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

Runtime coverage analysis

Covered functions
17
Functions that are reachable but not covered
15
Reachable functions
44
Percentage of reachable functions covered
65.91%
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_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 2
/src/qpdf/libqpdf/Pl_RunLength.cc 7
/src/qpdf/include/qpdf/Pipeline.hh 1
/src/qpdf/include/qpdf/QTC.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 4 14.8%
gold [1:9] 1 3.70%
yellow [10:29] 0 0.0%
greenyellow [30:49] 2 7.40%
lawngreen 50+ 20 74.0%
All colors 27 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::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
11
Reachable functions
38
Percentage of reachable functions covered
71.05%
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 2
/src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc 4
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_ASCIIHexDecoder.hh 1
/src/qpdf/include/qpdf/Pipeline.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 12 25.0%
gold [1:9] 1 2.08%
yellow [10:29] 1 2.08%
greenyellow [30:49] 1 2.08%
lawngreen 50+ 33 68.7%
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
8 8 4 :

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

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

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

8 8 Pl_LZWDecoder::addToTable(unsignedchar) call site: 00000 /src/qpdf/libqpdf/Pl_LZWDecoder.cc:116
0 0 None 0 0 Buffer::Members::Members(unsignedlong,unsignedchar*,bool) call site: 00000 /src/qpdf/libqpdf/Buffer.cc:23

Runtime coverage analysis

Covered functions
28
Functions that are reachable but not covered
18
Reachable functions
65
Percentage of reachable functions covered
72.31%
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 2
/src/qpdf/libqpdf/Pl_LZWDecoder.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 3
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/qpdf/libqpdf/Buffer.cc 4
/src/qpdf/include/qpdf/Buffer.hh 1
/src/qpdf/libqpdf/qpdf/Pl_LZWDecoder.hh 1
/src/qpdf/include/qpdf/Pipeline.hh 1

Fuzzer: runlength_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 19 57.5%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 14 42.4%
All colors 33 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
41 41 1 :

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

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

Runtime coverage analysis

Covered functions
17
Functions that are reachable but not covered
15
Reachable functions
44
Percentage of reachable functions covered
65.91%
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_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 2
/src/qpdf/libqpdf/Pl_RunLength.cc 7
/src/qpdf/include/qpdf/Pipeline.hh 1
/src/qpdf/include/qpdf/QTC.hh 1

Fuzzer: future_tiffpredictor_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

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

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

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

8 8 BitStream::reset() call site: 00000 /src/qpdf/libqpdf/BitStream.cc:21
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:29
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:32
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:36
0 0 None 0 78 Pl_TIFFPredictor::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:83
0 0 None 0 0 Pl_TIFFPredictor::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:104

Runtime coverage analysis

Covered functions
28
Functions that are reachable but not covered
21
Reachable functions
72
Percentage of reachable functions covered
70.83%
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 2
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 4
/src/qpdf/include/qpdf/Pipeline.hh 1
/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/stdexcept 2
/src/qpdf/libqpdf/qpdf/bits_functions.hh 2
/src/qpdf/libqpdf/qpdf/Pl_TIFFPredictor.hh 1

Fuzzer: ascii85_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 4 13.3%
gold [1:9] 2 6.66%
yellow [10:29] 2 6.66%
greenyellow [30:49] 1 3.33%
lawngreen 50+ 21 70.0%
All colors 30 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::write(unsignedcharconst*,unsignedlong) call site: 00000 /src/qpdf/libqpdf/Pl_ASCII85Decoder.cc:18

Runtime coverage analysis

Covered functions
16
Functions that are reachable but not covered
11
Reachable functions
38
Percentage of reachable functions covered
71.05%
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 2
/src/qpdf/libqpdf/Pl_ASCII85Decoder.cc 4
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_ASCII85Decoder.hh 1
/src/qpdf/include/qpdf/Pipeline.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 11 25.0%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 33 75.0%
All colors 44 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
28 28 1 :

['Pl_PNGFilter::encodeRow()']

28 28 Pl_PNGFilter::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:100
8 8 4 :

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

8 10 Pl_PNGFilter::Pl_PNGFilter(charconst*,Pipeline*,Pl_PNGFilter::action_e,unsignedint,unsignedint,unsignedint) call site: 00000 /src/qpdf/libqpdf/Pl_PNGFilter.cc:49
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:36
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:46

Runtime coverage analysis

Covered functions
25
Functions that are reachable but not covered
10
Reachable functions
55
Percentage of reachable functions covered
81.82%
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 2
/src/qpdf/libqpdf/Pl_PNGFilter.cc 12
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/include/qpdf/Pipeline.hh 1
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_PNGFilter.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 20 39.2%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 31 60.7%
All colors 51 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

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

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

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

8 8 BitStream::reset() call site: 00000 /src/qpdf/libqpdf/BitStream.cc:21
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:29
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:32
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:36
0 0 None 0 78 Pl_TIFFPredictor::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:83
0 0 None 0 0 Pl_TIFFPredictor::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:104

Runtime coverage analysis

Covered functions
28
Functions that are reachable but not covered
21
Reachable functions
72
Percentage of reachable functions covered
70.83%
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 2
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 4
/src/qpdf/include/qpdf/Pipeline.hh 1
/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/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 12 25.0%
gold [1:9] 2 4.16%
yellow [10:29] 0 0.0%
greenyellow [30:49] 2 4.16%
lawngreen 50+ 32 66.6%
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
8 8 4 :

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

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

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

8 8 Pl_LZWDecoder::addToTable(unsignedchar) call site: 00000 /src/qpdf/libqpdf/Pl_LZWDecoder.cc:116
0 0 None 0 0 Buffer::Members::Members(unsignedlong,unsignedchar*,bool) call site: 00000 /src/qpdf/libqpdf/Buffer.cc:23

Runtime coverage analysis

Covered functions
28
Functions that are reachable but not covered
18
Reachable functions
65
Percentage of reachable functions covered
72.31%
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 2
/src/qpdf/libqpdf/Pl_LZWDecoder.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QIntC.hh 3
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/qpdf/libqpdf/Buffer.cc 4
/src/qpdf/include/qpdf/Buffer.hh 1
/src/qpdf/libqpdf/qpdf/Pl_LZWDecoder.hh 1
/src/qpdf/include/qpdf/Pipeline.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 4 14.8%
gold [1:9] 0 0.0%
yellow [10:29] 1 3.70%
greenyellow [30:49] 2 7.40%
lawngreen 50+ 20 74.0%
All colors 27 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::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
11
Reachable functions
38
Percentage of reachable functions covered
71.05%
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 2
/src/qpdf/libqpdf/Pl_ASCIIHexDecoder.cc 4
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/qpdf/Pl_ASCIIHexDecoder.hh 1
/src/qpdf/include/qpdf/Pipeline.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 111 57.2%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 83 42.7%
All colors 194 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_']

362 937 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:120
21 21 1 :

['crc32']

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

['crc32']

21 21 read_buf call site: 00091 /src/zlib/deflate.c:227
16 37 3 :

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

16 37 Pl_Flate::Members::~Members() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:41
12 12 1 :

['inflateEnd']

32 125 Pl_Flate::finish() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:198
8 8 4 :

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

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

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

8 8 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:103
8 8 13 :

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

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

['_tr_stored_block', '_tr_align']

7 38 deflate call site: 00128 /src/zlib/deflate.c:1211
0 21 1 :

['deflateEnd']

0 21 deflateInit2_ call site: 00026 /src/zlib/deflate.c:499
0 0 None 747 869 deflate call site: 00064 /src/zlib/deflate.c:1009
0 0 None 747 869 deflate call site: 00064 /src/zlib/deflate.c:1011

Runtime coverage analysis

Covered functions
64
Functions that are reachable but not covered
44
Reachable functions
123
Percentage of reachable functions covered
64.23%
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 2
/src/qpdf/libqpdf/Pl_Flate.cc 8
/src/qpdf/include/qpdf/QIntC.hh 7
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/include/qpdf/Pipeline.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

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 111 57.2%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 83 42.7%
All colors 194 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_']

362 937 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:120
21 21 1 :

['crc32']

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

['crc32']

21 21 read_buf call site: 00091 /src/zlib/deflate.c:227
16 37 3 :

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

16 37 Pl_Flate::Members::~Members() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:41
12 12 1 :

['inflateEnd']

32 125 Pl_Flate::finish() call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:198
8 8 4 :

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

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

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

8 8 Pl_Flate::handleData(unsignedcharconst*,unsignedlong,int) call site: 00000 /src/qpdf/libqpdf/Pl_Flate.cc:103
8 8 13 :

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

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

['_tr_stored_block', '_tr_align']

7 38 deflate call site: 00128 /src/zlib/deflate.c:1211
0 21 1 :

['deflateEnd']

0 21 deflateInit2_ call site: 00026 /src/zlib/deflate.c:499
0 0 None 747 869 deflate call site: 00064 /src/zlib/deflate.c:1009
0 0 None 747 869 deflate call site: 00064 /src/zlib/deflate.c:1011

Runtime coverage analysis

Covered functions
64
Functions that are reachable but not covered
44
Reachable functions
123
Percentage of reachable functions covered
64.23%
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 2
/src/qpdf/libqpdf/Pl_Flate.cc 8
/src/qpdf/include/qpdf/QIntC.hh 7
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/include/qpdf/Pipeline.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

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 175 58.3%
gold [1:9] 8 2.66%
yellow [10:29] 1 0.33%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 116 38.6%
All colors 300 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
768 768 1 :

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

797 802 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:137
60 60 1 :

['do_sarray_io']

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

['do_barray_io']

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

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

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

['jpeg_destroy_compress']

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

['out_of_memory']

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

['__isoc99_sscanf']

2 2 jinit_memory_mgr call site: 00043 /src/libjpeg-turbo/jmemmgr.c:1273
2 2 1 :

['out_of_memory']

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

['Pipeline::getNext(bool)']

2 26 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:114
0 2 1 :

['jpeg_mem_term']

8 10 jinit_memory_mgr call site: 00041 /src/libjpeg-turbo/jmemmgr.c:1227
0 0 None 225 686 master_selection call site: 00211 /src/libjpeg-turbo/jdmaster.c:537
0 0 None 225 657 master_selection call site: 00212 /src/libjpeg-turbo/jdmaster.c:548

Runtime coverage analysis

Covered functions
215
Functions that are reachable but not covered
118
Reachable functions
241
Percentage of reachable functions covered
51.04%
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 2
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/include/qpdf/Pl_Buffer.hh 1
/src/qpdf/include/qpdf/Pipeline.hh 1
/src/qpdf/libqpdf/Buffer.cc 4
/src/qpdf/include/qpdf/Buffer.hh 1
/src/libjpeg-turbo/jerror.c 1
/src/libjpeg-turbo/jcapimin.c 4
/src/libjpeg-turbo/jmemmgr.c 1
/src/libjpeg-turbo/jmemnobs.c 3
/src/libjpeg-turbo/jcparam.c 7
/src/libjpeg-turbo/jcomapi.c 4
/src/libjpeg-turbo/jstdhuff.c 2
/src/libjpeg-turbo/jcapistd.c 2
/src/libjpeg-turbo/jcinit.c 1
/src/libjpeg-turbo/jcmaster.c 4
/src/libjpeg-turbo/jutils.c 2
/src/libjpeg-turbo/jccolor.c 3
/src/libjpeg-turbo/jcsample.c 3
/src/libjpeg-turbo/jcprepct.c 4
/src/libjpeg-turbo/simd/x86_64/jsimd.c 18
/src/libjpeg-turbo/jclossls.c 3
/src/libjpeg-turbo/jclhuff.c 1
/src/libjpeg-turbo/jcdiffct.c 3
/src/libjpeg-turbo/jcdctmgr.c 2
/src/libjpeg-turbo/jcarith.c 1
/src/libjpeg-turbo/jcphuff.c 1
/src/libjpeg-turbo/jchuff.c 1
/src/libjpeg-turbo/jccoefct.c 2
/src/libjpeg-turbo/jcmainct.c 3
/src/libjpeg-turbo/jcmarker.c 1
/src/qpdf/include/qpdf/QIntC.hh 6
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/libjpeg-turbo/jdapimin.c 6
/src/libjpeg-turbo/jdmarker.c 2
/src/libjpeg-turbo/jdinput.c 1
/src/libjpeg-turbo/jdmaster.c 6
/src/libjpeg-turbo/jdapistd.c 3
/src/libjpeg-turbo/jquant1.c 8
/src/libjpeg-turbo/jquant2.c 3
/src/libjpeg-turbo/jdmerge.c 3
/src/libjpeg-turbo/jdcolor.c 5
/src/libjpeg-turbo/jdsample.c 3
/src/libjpeg-turbo/jdpostct.c 3
/src/libjpeg-turbo/jdlossls.c 3
/src/libjpeg-turbo/jdlhuff.c 1
/src/libjpeg-turbo/jddiffct.c 3
/src/libjpeg-turbo/jddctmgr.c 2
/src/libjpeg-turbo/jdarith.c 1
/src/libjpeg-turbo/jdphuff.c 1
/src/libjpeg-turbo/jdhuff.c 1
/src/libjpeg-turbo/jdcoefct.c 2
/src/libjpeg-turbo/jdmainct.c 4

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 175 58.3%
gold [1:9] 8 2.66%
yellow [10:29] 1 0.33%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 116 38.6%
All colors 300 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
768 768 1 :

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

797 802 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:137
60 60 1 :

['do_sarray_io']

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

['do_barray_io']

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

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

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

['jpeg_destroy_compress']

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

['out_of_memory']

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

['__isoc99_sscanf']

2 2 jinit_memory_mgr call site: 00043 /src/libjpeg-turbo/jmemmgr.c:1273
2 2 1 :

['out_of_memory']

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

['Pipeline::getNext(bool)']

2 26 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:114
0 2 1 :

['jpeg_mem_term']

8 10 jinit_memory_mgr call site: 00041 /src/libjpeg-turbo/jmemmgr.c:1227
0 0 None 225 686 master_selection call site: 00211 /src/libjpeg-turbo/jdmaster.c:537
0 0 None 225 657 master_selection call site: 00212 /src/libjpeg-turbo/jdmaster.c:548

Runtime coverage analysis

Covered functions
215
Functions that are reachable but not covered
118
Reachable functions
241
Percentage of reachable functions covered
51.04%
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 2
/src/qpdf/libqpdf/Pl_Buffer.cc 4
/src/qpdf/include/qpdf/Pl_Buffer.hh 1
/src/qpdf/include/qpdf/Pipeline.hh 1
/src/qpdf/libqpdf/Buffer.cc 4
/src/qpdf/include/qpdf/Buffer.hh 1
/src/libjpeg-turbo/jerror.c 1
/src/libjpeg-turbo/jcapimin.c 4
/src/libjpeg-turbo/jmemmgr.c 1
/src/libjpeg-turbo/jmemnobs.c 3
/src/libjpeg-turbo/jcparam.c 7
/src/libjpeg-turbo/jcomapi.c 4
/src/libjpeg-turbo/jstdhuff.c 2
/src/libjpeg-turbo/jcapistd.c 2
/src/libjpeg-turbo/jcinit.c 1
/src/libjpeg-turbo/jcmaster.c 4
/src/libjpeg-turbo/jutils.c 2
/src/libjpeg-turbo/jccolor.c 3
/src/libjpeg-turbo/jcsample.c 3
/src/libjpeg-turbo/jcprepct.c 4
/src/libjpeg-turbo/simd/x86_64/jsimd.c 18
/src/libjpeg-turbo/jclossls.c 3
/src/libjpeg-turbo/jclhuff.c 1
/src/libjpeg-turbo/jcdiffct.c 3
/src/libjpeg-turbo/jcdctmgr.c 2
/src/libjpeg-turbo/jcarith.c 1
/src/libjpeg-turbo/jcphuff.c 1
/src/libjpeg-turbo/jchuff.c 1
/src/libjpeg-turbo/jccoefct.c 2
/src/libjpeg-turbo/jcmainct.c 3
/src/libjpeg-turbo/jcmarker.c 1
/src/qpdf/include/qpdf/QIntC.hh 6
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/libjpeg-turbo/jdapimin.c 6
/src/libjpeg-turbo/jdmarker.c 2
/src/libjpeg-turbo/jdinput.c 1
/src/libjpeg-turbo/jdmaster.c 6
/src/libjpeg-turbo/jdapistd.c 3
/src/libjpeg-turbo/jquant1.c 8
/src/libjpeg-turbo/jquant2.c 3
/src/libjpeg-turbo/jdmerge.c 3
/src/libjpeg-turbo/jdcolor.c 5
/src/libjpeg-turbo/jdsample.c 3
/src/libjpeg-turbo/jdpostct.c 3
/src/libjpeg-turbo/jdlossls.c 3
/src/libjpeg-turbo/jdlhuff.c 1
/src/libjpeg-turbo/jddiffct.c 3
/src/libjpeg-turbo/jddctmgr.c 2
/src/libjpeg-turbo/jdarith.c 1
/src/libjpeg-turbo/jdphuff.c 1
/src/libjpeg-turbo/jdhuff.c 1
/src/libjpeg-turbo/jdcoefct.c 2
/src/libjpeg-turbo/jdmainct.c 4

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 1536 74.1%
gold [1:9] 14 0.67%
yellow [10:29] 14 0.67%
greenyellow [30:49] 15 0.72%
lawngreen 50+ 492 23.7%
All colors 2071 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
124026 389941 63 :

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

124026 389941 QPDF::initializeEncryption() call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:730
5598 5602 8 :

['_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'QPDFObjectHandle::QPDFObjectHandle(std::__1::shared_ptr const&)', 'QTC::TC(char const*, char const*, int)', 'QPDF_Null::create(std::__1::shared_ptr , std::__1::basic_string_view > const&, std::__1::basic_string , std::__1::allocator >)', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'std::__1::shared_ptr ::shared_ptr[abi:v180000](std::__1::shared_ptr const&)', 'QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::shared_ptr ::~shared_ptr[abi:v180000]()']

5598 5602 QPDFObjectHandle::getKey(std::__1::basic_string ,std::__1::allocator >const&)const call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:1249
5580 5580 1 :

['QPDF::getAllPages()']

5580 5580 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:546
5542 5609 3 :

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

5574 55391 QPDF::read_xrefTable(longlong) call site: 00000 /src/qpdf/libqpdf/QPDF.cc:1020
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::getIntValue()const call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:637
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::getName()const call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:815
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::appendItem(QPDFObjectHandleconst&) call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:1177
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::hasKey(std::__1::basic_string ,std::__1::allocator >const&)const call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:1232
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::replaceKey(std::__1::basic_string ,std::__1::allocator >const&,QPDFObjectHandleconst&) call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:1502
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::removeKey(std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:1530
5514 5514 5 :

['__dynamic_cast', 'QPDFObject::isUnresolved() const', 'std::__1::shared_ptr ::get[abi:v180000]() const', 'std::__1::shared_ptr ::operator->[abi:v180000]() const', 'QPDF::Resolver::resolved(QPDF*, QPDFObjGen)']

5514 5514 QPDF_Stream*QPDFObject::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObject_private.hh:178
5514 5514 5 :

['__dynamic_cast', 'QPDFObject::isUnresolved() const', 'std::__1::shared_ptr ::get[abi:v180000]() const', 'std::__1::shared_ptr ::operator->[abi:v180000]() const', 'QPDF::Resolver::resolved(QPDF*, QPDFObjGen)']

5514 5514 QPDF_Array*QPDFObject::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObject_private.hh:178

Runtime coverage analysis

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

Files reached

filename functions hit
/src/qpdf/fuzz/json_fuzzer.cc 4
/src/qpdf/libqpdf/JSON.cc 28
/src/qpdf/libqpdf/BufferInputSource.cc 3
/src/qpdf/include/qpdf/InputSource.hh 8
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/include/qpdf/QIntC.hh 25
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QUtil.hh 3
/src/qpdf/libqpdf/QUtil.cc 12
/src/qpdf/include/qpdf/JSON.hh 6
/src/qpdf/include/qpdf/Buffer.hh 1
/src/qpdf/libqpdf/QPDF.cc 67
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/libqpdf/Pl_Discard.cc 1
/src/qpdf/libqpdf/Pipeline.cc 7
/src/qpdf/libqpdf/Pl_OStream.cc 2
/src/qpdf/include/qpdf/Pipeline.hh 1
/src/qpdf/libqpdf/QPDFTokenizer.cc 35
/src/qpdf/include/qpdf/QPDFObjGen.hh 10
/src/qpdf/include/qpdf/QPDFObjectHandle_future.hh 15
/src/qpdf/include/qpdf/QPDF.hh 21
/src/qpdf/include/qpdf/QPDFTokenizer.hh 13
/src/qpdf/libqpdf/QPDF_json.cc 5
/src/qpdf/libqpdf/InputSource.cc 5
/src/qpdf/libqpdf/QPDFExc.cc 2
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 1
/src/qpdf/libqpdf/QPDFParser.cc 26
/src/qpdf/libqpdf/QPDF_Null.cc 4
/src/qpdf/libqpdf/qpdf/QPDFValue.hh 10
/src/qpdf/libqpdf/QPDFValue.cc 2
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 22
/src/qpdf/libqpdf/QPDF_Integer.cc 3
/src/qpdf/libqpdf/QPDF_Unresolved.cc 2
/src/qpdf/libqpdf/QPDF_Array.cc 9
/src/qpdf/libqpdf/QPDFObjectHandle.cc 52
/src/qpdf/libqpdf/QPDFObjGen.cc 2
/src/qpdf/libqpdf/QPDFXRefEntry.cc 3
/src/qpdf/libqpdf/QPDF_Stream.cc 7
/src/qpdf/libqpdf/QPDF_Bool.cc 2
/src/qpdf/libqpdf/QPDF_Real.cc 4
/src/qpdf/libqpdf/QPDF_Name.cc 2
/src/qpdf/libqpdf/QPDF_Operator.cc 2
/src/qpdf/libqpdf/QPDF_String.cc 2
/src/qpdf/libqpdf/QPDF_Dictionary.cc 7
/src/qpdf/libqpdf/qpdf/QPDF_Array.hh 1
/src/qpdf/libqpdf/Pl_Buffer.cc 5
/src/qpdf/include/qpdf/Pl_Buffer.hh 1
/src/qpdf/libqpdf/Pl_Flate.cc 1
/src/qpdf/libqpdf/Pl_Count.cc 4
/src/qpdf/libqpdf/QPDF_encryption.cc 40
/src/qpdf/libqpdf/MD5.cc 4
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/ContentNormalizer.cc 2
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/CryptoRandomDataProvider.hh 1
/src/qpdf/include/qpdf/RandomDataProvider.hh 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/QPDF_Destroyed.cc 2

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 1536 74.1%
gold [1:9] 7 0.33%
yellow [10:29] 20 0.96%
greenyellow [30:49] 15 0.72%
lawngreen 50+ 493 23.8%
All colors 2071 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
388995 389941 63 :

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

388995 389941 QPDF::initializeEncryption() call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:730
22081 22156 9 :

['_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'QPDF::damagedPDF(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&)', 'QTC::TC(char const*, char const*, int)', '__cxa_free_exception', 'QPDFObjectHandle::isInteger() const', '__cxa_throw', 'QPDFObjectHandle::getIntValue() const', '__cxa_allocate_exception', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const']

22093 22168 QPDF::read_xrefTable(longlong) call site: 00000 /src/qpdf/libqpdf/QPDF.cc:1039
5598 5602 8 :

['_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'QPDFObjectHandle::QPDFObjectHandle(std::__1::shared_ptr const&)', 'QTC::TC(char const*, char const*, int)', 'QPDF_Null::create(std::__1::shared_ptr , std::__1::basic_string_view > const&, std::__1::basic_string , std::__1::allocator >)', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'std::__1::shared_ptr ::shared_ptr[abi:v180000](std::__1::shared_ptr const&)', 'QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', 'std::__1::shared_ptr ::~shared_ptr[abi:v180000]()']

5598 5602 QPDFObjectHandle::getKey(std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:1249
5580 5580 1 :

['QPDF::getAllPages()']

5580 5580 QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_json.cc:546
5542 5609 3 :

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

55242 55391 QPDF::read_xrefTable(longlong) call site: 00000 /src/qpdf/libqpdf/QPDF.cc:1020
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::getIntValue() call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:637
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::getName() call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:815
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::appendItem(QPDFObjectHandleconst&) call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:1177
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::hasKey(std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:1232
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::replaceKey(std::__1::basic_string ,std::__1::allocator >const&,QPDFObjectHandleconst&) call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:1502
5533 5535 4 :

['QPDFObjectHandle::typeWarning(char const*, std::__1::basic_string , std::__1::allocator > const&) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B7v180000ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'QTC::TC(char const*, char const*, int)']

5533 5535 QPDFObjectHandle::removeKey(std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/qpdf/libqpdf/QPDFObjectHandle.cc:1530
5514 5514 5 :

['__dynamic_cast', 'QPDFObject::isUnresolved() const', 'std::__1::shared_ptr ::get[abi:v180000]() const', 'std::__1::shared_ptr ::operator->[abi:v180000]() const', 'QPDF::Resolver::resolved(QPDF*, QPDFObjGen)']

5514 5514 QPDF_Stream*QPDFObject::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObject_private.hh:178

Runtime coverage analysis

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

Files reached

filename functions hit
/src/qpdf/fuzz/json_fuzzer.cc 4
/src/qpdf/libqpdf/JSON.cc 28
/src/qpdf/libqpdf/BufferInputSource.cc 3
/src/qpdf/include/qpdf/InputSource.hh 8
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/include/qpdf/QIntC.hh 25
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/include/qpdf/QUtil.hh 3
/src/qpdf/libqpdf/QUtil.cc 12
/src/qpdf/include/qpdf/JSON.hh 6
/src/qpdf/include/qpdf/Buffer.hh 1
/src/qpdf/libqpdf/QPDF.cc 67
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/libqpdf/Pl_Discard.cc 1
/src/qpdf/libqpdf/Pipeline.cc 7
/src/qpdf/libqpdf/Pl_OStream.cc 2
/src/qpdf/include/qpdf/Pipeline.hh 1
/src/qpdf/libqpdf/QPDFTokenizer.cc 35
/src/qpdf/include/qpdf/QPDFObjGen.hh 10
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 14
/src/qpdf/include/qpdf/QPDF.hh 21
/src/qpdf/include/qpdf/QPDFTokenizer.hh 13
/src/qpdf/libqpdf/QPDF_json.cc 5
/src/qpdf/libqpdf/InputSource.cc 5
/src/qpdf/libqpdf/QPDFExc.cc 2
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 1
/src/qpdf/libqpdf/QPDFParser.cc 26
/src/qpdf/libqpdf/QPDF_Null.cc 4
/src/qpdf/libqpdf/qpdf/QPDFValue.hh 10
/src/qpdf/libqpdf/QPDFValue.cc 2
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 22
/src/qpdf/libqpdf/QPDF_Integer.cc 3
/src/qpdf/libqpdf/QPDF_Unresolved.cc 2
/src/qpdf/libqpdf/QPDF_Array.cc 9
/src/qpdf/libqpdf/QPDFObjectHandle.cc 52
/src/qpdf/libqpdf/QPDFObjGen.cc 2
/src/qpdf/libqpdf/QPDFXRefEntry.cc 3
/src/qpdf/libqpdf/QPDF_Stream.cc 7
/src/qpdf/libqpdf/QPDF_Bool.cc 2
/src/qpdf/libqpdf/QPDF_Real.cc 4
/src/qpdf/libqpdf/QPDF_Name.cc 2
/src/qpdf/libqpdf/QPDF_Operator.cc 2
/src/qpdf/libqpdf/QPDF_String.cc 2
/src/qpdf/libqpdf/QPDF_Dictionary.cc 7
/src/qpdf/libqpdf/qpdf/QPDF_Array.hh 1
/src/qpdf/libqpdf/Pl_Buffer.cc 5
/src/qpdf/include/qpdf/Pl_Buffer.hh 1
/src/qpdf/libqpdf/Pl_Flate.cc 1
/src/qpdf/libqpdf/Pl_Count.cc 4
/src/qpdf/libqpdf/QPDF_encryption.cc 40
/src/qpdf/libqpdf/MD5.cc 4
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/ContentNormalizer.cc 2
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/CryptoRandomDataProvider.hh 1
/src/qpdf/include/qpdf/RandomDataProvider.hh 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/QPDF_Destroyed.cc 2

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 529 12.3%
gold [1:9] 53 1.23%
yellow [10:29] 72 1.67%
greenyellow [30:49] 23 0.53%
lawngreen 50+ 3619 84.2%
All colors 4296 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
11056 27623 4 :

['QPDFObjectHandle::getArrayNItems() const', 'QPDFObjectHandle::isNameAndEquals(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::eraseItem(int)']

11080 62580 QPDFWriter::unparseObject(QPDFObjectHandle,int,int,unsignedlong,bool) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1460
6258 6258 1 :

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

6340 35357 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2124
5679 5679 1 :

['QPDFWriter::enqueueObjectsPCLm()']

5687 25935 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3003
5675 5675 1 :

['QPDFObjectHandle::parseAsContents(QPDFObjectHandle::ParserCallbacks*)']

5675 5675 QPDFPageObjectHelper::parseContents(QPDFObjectHandle::ParserCallbacks*) call site: 00000 /src/qpdf/libqpdf/QPDFPageObjectHelper.cc:488
5528 106382 25 :

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

5592 106446 NNTreeIterator::split(QPDFObjectHandle,std::__1::__list_iterator ) call site: 00000 /src/qpdf/libqpdf/NNTree.cc:283
5525 5529 10 :

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

5541 44366 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2909
768 768 1 :

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

797 802 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:137
607 607 1 :

['compute_U_value_R2(std::__1::basic_string , std::__1::allocator > const&, QPDF::EncryptionData const&)']

607 607 compute_U_value(std::__1::basic_string ,std::__1::allocator >const&,QPDF::EncryptionDataconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:503
443 443 1 :

['QPDF::recover_encryption_key_with_password(std::__1::basic_string , std::__1::allocator > const&, QPDF::EncryptionData const&)']

443 443 QPDF::compute_encryption_key(std::__1::basic_string ,std::__1::allocator >const&,QPDF::EncryptionDataconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:362
252 474 6 :

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

252 474 inflate call site: 00000 /src/zlib/inflate.c:817
102 119 5 :

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

102 119 Pl_TIFFPredictor::processRow() call site: 00000 /src/qpdf/libqpdf/Pl_TIFFPredictor.cc:76
80 154975 20 :

['QPDFObjectHandle::appendItem(QPDFObjectHandle const&)', 'std::__1::operator==[abi:v180000](std::__1::__list_iterator const&, std::__1::__list_iterator const&)', 'QPDFObjectHandle::~QPDFObjectHandle()', 'std::__1::__list_iterator ::operator--[abi:v180000]()', 'warn(QPDF&, QPDFObjectHandle&, std::__1::basic_string , std::__1::allocator > const&)', 'QPDFObjectHandle::isInitialized() const', 'QPDFObjectHandle::QPDFObjectHandle()', 'std::__1::__list_iterator ::operator->[abi:v180000]() const', 'QPDFObjectHandle::operator=(QPDFObjectHandle const&)', 'QPDFObjectHandle::getArrayNItems() const', 'QPDFObjectHandle::operator=(QPDFObjectHandle&&)', 'QPDFObjectHandle::isArray() const', 'std::__1::list >::begin[abi:v180000]()', 'QPDFObjectHandle::QPDFObjectHandle(QPDFObjectHandle const&)', 'std::__1::list >::end[abi:v180000]()', 'QPDFObjectHandle::isDictionary() const', 'QPDFObjectHandle::replaceKey(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle const&)', 'QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::newArray()']

80 160499 NNTreeIterator::resetLimits(QPDFObjectHandle,std::__1::__list_iterator ) call site: 00000 /src/qpdf/libqpdf/NNTree.cc:161

Runtime coverage analysis

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

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_fuzzer.cc 13
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 8
/src/qpdf/include/qpdf/Buffer.hh 1
/src/qpdf/libqpdf/Pl_DCT.cc 2
/src/qpdf/libqpdf/Pl_PNGFilter.cc 2
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/BufferInputSource.cc 2
/src/qpdf/include/qpdf/InputSource.hh 8
/src/qpdf/include/qpdf/QIntC.hh 35
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDF.cc 75
/src/qpdf/include/qpdf/QPDF.hh 36
/src/qpdf/libqpdf/InputSource.cc 5
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 2
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 41
/src/qpdf/include/qpdf/QUtil.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 14
/src/qpdf/libqpdf/QUtil.cc 34
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 1
/src/qpdf/libqpdf/QPDFParser.cc 26
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFObjectHandle_future.hh 23
/src/qpdf/libqpdf/QPDF_Null.cc 4
/src/qpdf/libqpdf/qpdf/QPDFValue.hh 9
/src/qpdf/libqpdf/QPDFValue.cc 2
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 24
/src/qpdf/libqpdf/QPDF_Integer.cc 3
/src/qpdf/libqpdf/QPDF_Unresolved.cc 2
/src/qpdf/libqpdf/QPDF_Array.cc 12
/src/qpdf/libqpdf/QPDFObjectHandle.cc 107
/src/qpdf/libqpdf/QPDFObjGen.cc 3
/src/qpdf/libqpdf/QPDFXRefEntry.cc 4
/src/qpdf/libqpdf/QPDF_Stream.cc 12
/src/qpdf/libqpdf/QPDF_Bool.cc 2
/src/qpdf/libqpdf/QPDF_Real.cc 4
/src/qpdf/libqpdf/QPDF_Name.cc 3
/src/qpdf/libqpdf/QPDF_Operator.cc 2
/src/qpdf/libqpdf/QPDF_String.cc 4
/src/qpdf/libqpdf/QPDF_Dictionary.cc 9
/src/qpdf/libqpdf/Pl_OStream.cc 2
/src/qpdf/include/qpdf/Pipeline.hh 1
/src/qpdf/libqpdf/qpdf/QPDF_Array.hh 1
/src/qpdf/libqpdf/Pl_Buffer.cc 6
/src/qpdf/include/qpdf/Pl_Buffer.hh 1
/src/qpdf/libqpdf/Pl_Flate.cc 3
/src/qpdf/libqpdf/Pl_Count.cc 6
/src/qpdf/libqpdf/QPDF_encryption.cc 48
/src/qpdf/libqpdf/MD5.cc 6
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/ContentNormalizer.cc 2
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/CryptoRandomDataProvider.hh 1
/src/qpdf/include/qpdf/RandomDataProvider.hh 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDFWriter.cc 69
/src/qpdf/libqpdf/qpdf/QPDF_String.hh 1
/src/qpdf/libqpdf/qpdf/ObjTable.hh 16
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_StdioFile.cc 2
/src/qpdf/libqpdf/Pl_MD5.cc 4
/src/qpdf/include/qpdf/QPDFWriter.hh 1
/src/qpdf/libqpdf/Pl_RC4.cc 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1
/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 5
/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 5
/src/qpdf/libqpdf/QPDFObjectHelper.cc 1
/src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc 9
/src/qpdf/libqpdf/QPDFFormFieldObjectHelper.cc 23
/src/qpdf/include/qpdf/QPDFFormFieldObjectHelper.hh 2
/src/qpdf/include/qpdf/QPDFPageDocumentHelper.hh 1
/src/qpdf/include/qpdf/QPDFPageObjectHelper.hh 1
/src/qpdf/libqpdf/QPDFPageObjectHelper.cc 9
/src/qpdf/include/qpdf/QPDFAnnotationObjectHelper.hh 1
/src/qpdf/libqpdf/QPDFAnnotationObjectHelper.cc 7
/src/qpdf/libqpdf/Pl_QPDFTokenizer.cc 4
/src/qpdf/libqpdf/QPDFMatrix.cc 11
/src/qpdf/include/qpdf/QPDFAcroFormDocumentHelper.hh 1
/src/qpdf/libqpdf/QPDFNumberTreeObjectHelper.cc 6
/src/qpdf/libqpdf/NNTree.cc 24
/src/qpdf/libqpdf/qpdf/NNTree.hh 4
/src/qpdf/include/qpdf/QPDFNumberTreeObjectHelper.hh 1
/src/qpdf/libqpdf/JSON.cc 2
/src/qpdf/libqpdf/Pl_String.cc 3
/src/qpdf/include/qpdf/JSON.hh 1
/src/qpdf/libqpdf/QPDFNameTreeObjectHelper.cc 6
/src/qpdf/include/qpdf/QPDFNameTreeObjectHelper.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 531 12.3%
gold [1:9] 63 1.46%
yellow [10:29] 47 1.09%
greenyellow [30:49] 20 0.46%
lawngreen 50+ 3635 84.6%
All colors 4296 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
115962 126982 11 :

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

115962 127395 QPDF::decryptStream(std::__1::shared_ptr ,std::__1::shared_ptr ,QPDF&,Pipeline*&,QPDFObjGenconst&,QPDFObjectHandle&,std::__1::unique_ptr >&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:1067
16567 27623 4 :

['QPDFObjectHandle::getArrayNItems() const', 'QPDFObjectHandle::isNameAndEquals(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::getArrayItem(int) const', 'QPDFObjectHandle::eraseItem(int)']

38662 62580 QPDFWriter::unparseObject(QPDFObjectHandle,int,int,unsignedlong,bool) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1460
11127 33691 8 :

['QPDFAcroFormDocumentHelper::QPDFAcroFormDocumentHelper(QPDF&)', 'QPDFAcroFormDocumentHelper::~QPDFAcroFormDocumentHelper()', 'QPDFObjectHandle::getUTF8Value() const', 'QPDFObjectHandle::newUnicodeString(std::__1::basic_string , std::__1::allocator > const&)', 'QPDFObjectHandle::getQPDF(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::isString() const', 'QPDFFormFieldObjectHelper::setFieldAttribute(std::__1::basic_string , std::__1::allocator > const&, QPDFObjectHandle)', 'QPDFAcroFormDocumentHelper::setNeedAppearances(bool)']

11135 33701 QPDFFormFieldObjectHelper::setV(QPDFObjectHandle,bool) call site: 00000 /src/qpdf/libqpdf/QPDFFormFieldObjectHelper.cc:302
6258 6258 1 :

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

6340 35357 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2124
5857 5857 2 :

['QPDFObjectHandle::getKey(std::__1::basic_string , std::__1::allocator > const&) const', 'QPDFObjectHandle::warnIfPossible(std::__1::basic_string , std::__1::allocator > const&) const']

11396 57018 QPDFPageDocumentHelper::flattenAnnotations(int,int) call site: 00000 /src/qpdf/libqpdf/QPDFPageDocumentHelper.cc:59
5679 5679 1 :

['QPDFWriter::enqueueObjectsPCLm()']

5687 25935 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3003
5675 5675 1 :

['QPDFObjectHandle::parseAsContents(QPDFObjectHandle::ParserCallbacks*)']

5675 5675 QPDFPageObjectHelper::parseContents(QPDFObjectHandle::ParserCallbacks*) call site: 00000 /src/qpdf/libqpdf/QPDFPageObjectHelper.cc:488
5599 11120 5 :

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

5611 11132 QPDFWriter::prepareFileForWrite() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2066
5525 5529 10 :

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

22111 44366 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2909
768 768 1 :

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

797 802 Pl_DCT::finish() call site: 00000 /src/qpdf/libqpdf/Pl_DCT.cc:137
443 443 1 :

['QPDF::recover_encryption_key_with_password(std::__1::basic_string , std::__1::allocator > const&, QPDF::EncryptionData const&)']

443 443 QPDF::compute_encryption_key(std::__1::basic_string ,std::__1::allocator >const&,QPDF::EncryptionDataconst&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:362
252 474 6 :

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

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

Runtime coverage analysis

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

Files reached

filename functions hit
/src/qpdf/fuzz/qpdf_fuzzer.cc 13
/src/qpdf/libqpdf/Buffer.cc 7
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 8
/src/qpdf/include/qpdf/Buffer.hh 1
/src/qpdf/libqpdf/Pl_DCT.cc 2
/src/qpdf/libqpdf/Pl_PNGFilter.cc 2
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/BufferInputSource.cc 2
/src/qpdf/include/qpdf/InputSource.hh 8
/src/qpdf/include/qpdf/QIntC.hh 35
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDF.cc 75
/src/qpdf/include/qpdf/QPDF.hh 36
/src/qpdf/libqpdf/InputSource.cc 5
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 2
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 41
/src/qpdf/include/qpdf/QUtil.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 14
/src/qpdf/libqpdf/QUtil.cc 34
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 1
/src/qpdf/libqpdf/QPDFParser.cc 26
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 21
/src/qpdf/libqpdf/QPDF_Null.cc 4
/src/qpdf/libqpdf/qpdf/QPDFValue.hh 9
/src/qpdf/libqpdf/QPDFValue.cc 2
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 24
/src/qpdf/libqpdf/QPDF_Integer.cc 3
/src/qpdf/libqpdf/QPDF_Unresolved.cc 2
/src/qpdf/libqpdf/QPDF_Array.cc 12
/src/qpdf/libqpdf/QPDFObjectHandle.cc 107
/src/qpdf/libqpdf/QPDFObjGen.cc 3
/src/qpdf/libqpdf/QPDFXRefEntry.cc 4
/src/qpdf/libqpdf/QPDF_Stream.cc 12
/src/qpdf/libqpdf/QPDF_Bool.cc 2
/src/qpdf/libqpdf/QPDF_Real.cc 4
/src/qpdf/libqpdf/QPDF_Name.cc 3
/src/qpdf/libqpdf/QPDF_Operator.cc 2
/src/qpdf/libqpdf/QPDF_String.cc 4
/src/qpdf/libqpdf/QPDF_Dictionary.cc 9
/src/qpdf/libqpdf/Pl_OStream.cc 2
/src/qpdf/include/qpdf/Pipeline.hh 1
/src/qpdf/libqpdf/qpdf/QPDF_Array.hh 1
/src/qpdf/libqpdf/Pl_Buffer.cc 6
/src/qpdf/include/qpdf/Pl_Buffer.hh 1
/src/qpdf/libqpdf/Pl_Flate.cc 3
/src/qpdf/libqpdf/Pl_Count.cc 6
/src/qpdf/libqpdf/QPDF_encryption.cc 48
/src/qpdf/libqpdf/MD5.cc 6
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 1
/src/qpdf/libqpdf/ContentNormalizer.cc 2
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/RC4.cc 2
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/CryptoRandomDataProvider.hh 1
/src/qpdf/include/qpdf/RandomDataProvider.hh 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDFWriter.cc 69
/src/qpdf/libqpdf/qpdf/QPDF_String.hh 1
/src/qpdf/libqpdf/qpdf/ObjTable.hh 16
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_StdioFile.cc 2
/src/qpdf/libqpdf/Pl_MD5.cc 4
/src/qpdf/include/qpdf/QPDFWriter.hh 1
/src/qpdf/libqpdf/Pl_RC4.cc 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1
/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 5
/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 5
/src/qpdf/libqpdf/QPDFObjectHelper.cc 1
/src/qpdf/libqpdf/QPDFAcroFormDocumentHelper.cc 9
/src/qpdf/libqpdf/QPDFFormFieldObjectHelper.cc 23
/src/qpdf/include/qpdf/QPDFFormFieldObjectHelper.hh 2
/src/qpdf/include/qpdf/QPDFPageDocumentHelper.hh 1
/src/qpdf/include/qpdf/QPDFPageObjectHelper.hh 1
/src/qpdf/libqpdf/QPDFPageObjectHelper.cc 9
/src/qpdf/include/qpdf/QPDFAnnotationObjectHelper.hh 1
/src/qpdf/libqpdf/QPDFAnnotationObjectHelper.cc 7
/src/qpdf/libqpdf/Pl_QPDFTokenizer.cc 4
/src/qpdf/libqpdf/QPDFMatrix.cc 11
/src/qpdf/include/qpdf/QPDFAcroFormDocumentHelper.hh 1
/src/qpdf/libqpdf/QPDFNumberTreeObjectHelper.cc 6
/src/qpdf/libqpdf/NNTree.cc 24
/src/qpdf/libqpdf/qpdf/NNTree.hh 4
/src/qpdf/include/qpdf/QPDFNumberTreeObjectHelper.hh 1
/src/qpdf/libqpdf/JSON.cc 2
/src/qpdf/libqpdf/Pl_String.cc 3
/src/qpdf/include/qpdf/JSON.hh 1
/src/qpdf/libqpdf/QPDFNameTreeObjectHelper.cc 6
/src/qpdf/include/qpdf/QPDFNameTreeObjectHelper.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'] 25 0 94 17 12 1034 0 7180 1472
QPDFPageObjectHelper::flattenRotation(QPDFAcroFormDocumentHelper*) /src/qpdf/libqpdf/QPDFPageObjectHelper.cc 2 ['N/A', 'N/A'] 31 0 978 160 121 1305 0 8546 1406
encode_mcu_huff /src/libjpeg-turbo/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'] 24 0 1441 299 281 1052 0 6357 571
QPDFFormFieldObjectHelper::setRadioButtonValue(QPDFObjectHandle) /src/qpdf/libqpdf/QPDFFormFieldObjectHelper.cc 2 ['N/A', 'N/A'] 26 0 868 196 170 919 3 5946 342
NNTreeIterator::split(QPDFObjectHandle,std::__1::__list_iterator ) /src/qpdf/libqpdf/NNTree.cc 3 ['N/A', 'N/A', 'N/A'] 25 0 784 135 87 932 1 6000 339
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 1112 199 164 5 3 332 328

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

Functions statically reachable by fuzzers
52.0%
1526 / 2954
Cyclomatic complexity statically reachable by fuzzers
67.0%
22718 / 34092

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 Fuzzers runtime hit Func lines hit % I Count BB Count Cyclomatic complexity Functions reached Reached by functions Accumulated cyclomatic complexity Undiscovered complexity

Fuzz engine guidance

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

/src/qpdf/fuzz/ascii85_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

-focus_function=['FuzzHelper::doChecks()', 'FuzzHelper::doChecks()', 'Pl_ASCII85Decoder::flush()', 'FuzzHelper::doChecks()']

/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=['FuzzHelper::doChecks()', 'Pl_PNGFilter::write(unsigned char const*, unsigned long)', 'FuzzHelper::doChecks()']

/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()', 'FuzzHelper::doChecks()', 'FuzzHelper::doChecks()', 'FuzzHelper::doChecks()', 'Pl_Discard::~Pl_Discard()']

/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=['FuzzHelper::doChecks()', 'FuzzHelper::doChecks()', 'Pl_ASCIIHexDecoder::flush()', 'FuzzHelper::doChecks()']

/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&)', 'FuzzHelper::doChecks()', 'FuzzHelper::doChecks()', 'Pl_LZWDecoder::handleCode(unsigned int)', 'Pl_LZWDecoder::getFirstChar(unsigned int)', 'Pl_LZWDecoder::handleCode(unsigned int)', 'Pl_LZWDecoder::addToTable(unsigned char)', 'Pl_LZWDecoder::addToTable(unsigned char)', 'Pl_LZWDecoder::handleCode(unsigned int)']

/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()', 'FuzzHelper::doChecks()', 'FuzzHelper::doChecks()', 'FuzzHelper::doChecks()', 'Pl_Discard::~Pl_Discard()']

/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=['FuzzHelper::doChecks()', 'unsigned int QIntC::to_uint(unsigned long const&)', 'BitStream::getBitsSigned(unsigned long)', 'BitWriter::writeBits(unsigned long long, unsigned long)', 'FuzzHelper::doChecks()', 'Pl_TIFFPredictor::processRow()', '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=['FuzzHelper::doChecks()', 'FuzzHelper::doChecks()', 'Pl_ASCII85Decoder::flush()', 'FuzzHelper::doChecks()']

/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=['FuzzHelper::doChecks()', 'Pl_PNGFilter::write(unsigned char const*, unsigned long)', 'FuzzHelper::doChecks()']

/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=['FuzzHelper::doChecks()', 'unsigned int QIntC::to_uint(unsigned long const&)', 'BitStream::getBitsSigned(unsigned long)', 'BitWriter::writeBits(unsigned long long, unsigned long)', 'FuzzHelper::doChecks()', 'Pl_TIFFPredictor::processRow()', '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&)', 'FuzzHelper::doChecks()', 'FuzzHelper::doChecks()', 'Pl_LZWDecoder::handleCode(unsigned int)', 'Pl_LZWDecoder::getFirstChar(unsigned int)', 'Pl_LZWDecoder::handleCode(unsigned int)', 'Pl_LZWDecoder::addToTable(unsigned char)', 'Pl_LZWDecoder::addToTable(unsigned char)', 'Pl_LZWDecoder::handleCode(unsigned int)']

/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=['FuzzHelper::doChecks()', 'FuzzHelper::doChecks()', 'Pl_ASCIIHexDecoder::flush()', 'FuzzHelper::doChecks()']

/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', 'deflateReset', 'unsigned long QIntC::to_size(unsigned int const&)', '_tr_flush_block', 'read_buf', 'Pl_Flate::finish()', 'Pl_Flate::finish()']

/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', 'deflateReset', 'unsigned long QIntC::to_size(unsigned int const&)', '_tr_flush_block', 'read_buf', 'Pl_Flate::finish()', 'Pl_Flate::finish()']

/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', 'master_selection', 'unsigned int QIntC::to_uint(int const&)', 'jinit_memory_mgr', 'jpeg_core_output_dimensions', 'jpeg_calc_output_dimensions', 'FuzzHelper::doChecks()', 'Pl_DCT::finish()', 'Pl_Buffer::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', 'master_selection', 'unsigned int QIntC::to_uint(int const&)', 'jinit_memory_mgr', 'jpeg_core_output_dimensions', 'jpeg_calc_output_dimensions', 'FuzzHelper::doChecks()', 'Pl_DCT::finish()', 'Pl_Buffer::write(unsigned char const*, unsigned long)']

/src/qpdf/fuzz/json_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

-focus_function=['QPDF::initializeEncryption()', 'QPDF_Dictionary::replaceKey(std::__1::basic_string, std::__1::allocator > const&, QPDFObjectHandle)', 'QPDFObjectHandle::newInteger(long long)', 'QPDFObjectHandle::newNull()', 'QPDFObjectHandle::getIntValue() const', 'QPDF_Array::checkOwnership(QPDFObjectHandle const&) const', 'QPDFObjectHandle::getIntValueAsInt() const', 'QPDFObjectHandle::asStreamWithAssert() const', 'QPDF_Stream::create(QPDF*, QPDFObjGen const&, QPDFObjectHandle, long long, unsigned long)', 'QPDF::read_xref(long long)']

/src/qpdf/fuzz/json_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

-focus_function=['QPDF::initializeEncryption()', 'QPDF_Dictionary::replaceKey(std::__1::basic_string, std::__1::allocator > const&, QPDFObjectHandle)', 'QPDFObjectHandle::newInteger(long long)', 'QPDFObjectHandle::newNull()', 'QPDFObjectHandle::getIntValue()', 'QPDF_Array::checkOwnership(QPDFObjectHandle const&) const', 'QPDFObjectHandle::getIntValueAsInt()', 'QPDFObjectHandle::asStreamWithAssert() const', 'QPDF_Stream::create(QPDF*, QPDFObjGen const&, QPDFObjectHandle, long long, unsigned long)', 'QPDF::read_xref(long 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::generateID()', 'QPDF::interpretCF(std::__1::shared_ptr, QPDFObjectHandle)', 'QPDFWriter::setEncryptionParametersInternal(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&, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&)', 'QPDFWriter::writeLinearized()', 'QPDFWriter::writeStandard()', 'QPDFWriter::unparseObject(QPDFObjectHandle, int, int, unsigned long, bool)', 'QPDFAnnotationObjectHelper::getPageContentForAppearance(std::__1::basic_string, std::__1::allocator > const&, int, int, int)', 'compute_U_value_R3(std::__1::basic_string, std::__1::allocator > const&, QPDF::EncryptionData const&)', 'QPDF::newStream(std::__1::basic_string, std::__1::allocator > const&)', 'check_owner_password(std::__1::basic_string, std::__1::allocator >&, std::__1::basic_string, std::__1::allocator > const&, QPDF::EncryptionData const&)']

/src/qpdf/fuzz/qpdf_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

-focus_function=['QPDFWriter::prepareFileForWrite()', 'QPDFWriter::generateID()', 'QPDF::interpretCF(std::__1::shared_ptr, QPDFObjectHandle)', 'QPDFWriter::setEncryptionParametersInternal(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&, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&)', 'QPDFWriter::writeLinearized()', 'QPDFWriter::writeStandard()', 'QPDF_Dictionary::create(std::__1::map, std::__1::allocator >, QPDFObjectHandle, std::__1::less, std::__1::allocator > >, std::__1::allocator, std::__1::allocator > const, QPDFObjectHandle> > > const&)', 'QPDFAnnotationObjectHelper::getPageContentForAppearance(std::__1::basic_string, std::__1::allocator > const&, int, int, int)', 'QPDF::newStream(std::__1::basic_string, std::__1::allocator > const&)', 'check_owner_password(std::__1::basic_string, std::__1::allocator >&, std::__1::basic_string, std::__1::allocator > const&, QPDF::EncryptionData const&)']

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

Directories in report

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

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_ascii85_fuzzer fuzzerLogFile-0-PuGaaNYn9O.data fuzzerLogFile-0-PuGaaNYn9O.data.yaml future_ascii85_fuzzer.covreport
pngpredictor_fuzzer fuzzerLogFile-0-uj7jePoCDR.data fuzzerLogFile-0-uj7jePoCDR.data.yaml pngpredictor_fuzzer.covreport
future_runlength_fuzzer fuzzerLogFile-0-Dso8NT5BxX.data fuzzerLogFile-0-Dso8NT5BxX.data.yaml future_runlength_fuzzer.covreport
future_hex_fuzzer fuzzerLogFile-0-d1THqQ3GFz.data fuzzerLogFile-0-d1THqQ3GFz.data.yaml future_hex_fuzzer.covreport
future_lzw_fuzzer fuzzerLogFile-0-3MXKRl1RwV.data fuzzerLogFile-0-3MXKRl1RwV.data.yaml future_lzw_fuzzer.covreport
runlength_fuzzer fuzzerLogFile-0-GC1dnrdXej.data fuzzerLogFile-0-GC1dnrdXej.data.yaml runlength_fuzzer.covreport
future_tiffpredictor_fuzzer fuzzerLogFile-0-VXwFBubDXH.data fuzzerLogFile-0-VXwFBubDXH.data.yaml future_tiffpredictor_fuzzer.covreport
ascii85_fuzzer fuzzerLogFile-0-sJQRoGXy3M.data fuzzerLogFile-0-sJQRoGXy3M.data.yaml ascii85_fuzzer.covreport
future_pngpredictor_fuzzer fuzzerLogFile-0-xeokMV2qQL.data fuzzerLogFile-0-xeokMV2qQL.data.yaml future_pngpredictor_fuzzer.covreport
tiffpredictor_fuzzer fuzzerLogFile-0-sDSoEhmrjx.data fuzzerLogFile-0-sDSoEhmrjx.data.yaml tiffpredictor_fuzzer.covreport
lzw_fuzzer fuzzerLogFile-0-SHa5ejLcCB.data fuzzerLogFile-0-SHa5ejLcCB.data.yaml lzw_fuzzer.covreport
hex_fuzzer fuzzerLogFile-0-InqK6gwxSd.data fuzzerLogFile-0-InqK6gwxSd.data.yaml hex_fuzzer.covreport
flate_fuzzer fuzzerLogFile-0-5m9HyTtIHK.data fuzzerLogFile-0-5m9HyTtIHK.data.yaml flate_fuzzer.covreport
future_flate_fuzzer fuzzerLogFile-0-KJH5991cjp.data fuzzerLogFile-0-KJH5991cjp.data.yaml future_flate_fuzzer.covreport
dct_fuzzer fuzzerLogFile-0-1I2Hm0h0G8.data fuzzerLogFile-0-1I2Hm0h0G8.data.yaml dct_fuzzer.covreport
future_dct_fuzzer fuzzerLogFile-0-rywI6J2lKG.data fuzzerLogFile-0-rywI6J2lKG.data.yaml future_dct_fuzzer.covreport
future_json_fuzzer fuzzerLogFile-0-xLD3Scd9LC.data fuzzerLogFile-0-xLD3Scd9LC.data.yaml future_json_fuzzer.covreport
json_fuzzer fuzzerLogFile-0-hTvDqurba0.data fuzzerLogFile-0-hTvDqurba0.data.yaml json_fuzzer.covreport
future_qpdf_fuzzer fuzzerLogFile-0-HbGDvgkREK.data fuzzerLogFile-0-HbGDvgkREK.data.yaml future_qpdf_fuzzer.covreport
qpdf_fuzzer fuzzerLogFile-0-eUz9x2HQIb.data fuzzerLogFile-0-eUz9x2HQIb.data.yaml qpdf_fuzzer.covreport