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
hex_fuzzer /src/qpdf/fuzz/hex_fuzzer.cc 40 28 5 7 123 77 hex_fuzzer.cc
ascii85_fuzzer /src/qpdf/fuzz/ascii85_fuzzer.cc 41 26 5 7 127 76 ascii85_fuzzer.cc
future_hex_fuzzer /src/qpdf/fuzz/hex_fuzzer.cc 40 28 5 7 123 77 hex_fuzzer.cc
future_ascii85_fuzzer /src/qpdf/fuzz/ascii85_fuzzer.cc 41 26 5 7 127 76 ascii85_fuzzer.cc
tiffpredictor_fuzzer /src/qpdf/fuzz/tiffpredictor_fuzzer.cc 79 36 11 13 258 197 tiffpredictor_fuzzer.cc
future_dct_fuzzer /src/qpdf/fuzz/dct_fuzzer.cc 231 517 10 53 3997 1680 dct_fuzzer.cc
future_runlength_fuzzer /src/qpdf/fuzz/runlength_fuzzer.cc 53 25 6 6 177 100 runlength_fuzzer.cc
future_lzw_fuzzer /src/qpdf/fuzz/lzw_fuzzer.cc 72 41 10 11 267 182 lzw_fuzzer.cc
future_flate_fuzzer /src/qpdf/fuzz/flate_fuzzer.cc 130 416 11 15 2636 1001 flate_fuzzer.cc
future_pngpredictor_fuzzer /src/qpdf/fuzz/pngpredictor_fuzzer.cc 57 29 8 8 195 142 pngpredictor_fuzzer.cc
pngpredictor_fuzzer /src/qpdf/fuzz/pngpredictor_fuzzer.cc 57 29 8 8 195 142 pngpredictor_fuzzer.cc
flate_fuzzer /src/qpdf/fuzz/flate_fuzzer.cc 130 416 11 15 2636 1001 flate_fuzzer.cc
runlength_fuzzer /src/qpdf/fuzz/runlength_fuzzer.cc 53 25 6 6 177 100 runlength_fuzzer.cc
lzw_fuzzer /src/qpdf/fuzz/lzw_fuzzer.cc 72 41 10 11 267 182 lzw_fuzzer.cc
future_tiffpredictor_fuzzer /src/qpdf/fuzz/tiffpredictor_fuzzer.cc 79 36 11 13 258 197 tiffpredictor_fuzzer.cc
future_json_fuzzer /src/qpdf/fuzz/json_fuzzer.cc 1390 2138 41 66 11580 8097 json_fuzzer.cc
json_fuzzer /src/qpdf/fuzz/json_fuzzer.cc 1390 2138 41 66 11580 8097 json_fuzzer.cc
qpdf_outlines_fuzzer /src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 1498 2133 41 80 12412 8851 qpdf_outlines_fuzzer.cc
future_qpdf_outlines_fuzzer /src/qpdf/fuzz/qpdf_outlines_fuzzer.cc 1498 2133 41 80 12412 8851 qpdf_outlines_fuzzer.cc
dct_fuzzer /src/qpdf/fuzz/dct_fuzzer.cc 231 517 10 53 3997 1680 dct_fuzzer.cc
future_qpdf_page_fuzzer /src/qpdf/fuzz/qpdf_page_fuzzer.cc 1981 1937 41 101 18217 13073 qpdf_page_fuzzer.cc
future_qpdf_crypt_insecure_fuzzer /src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc 1782 2132 41 82 16205 11366 qpdf_crypt_insecure_fuzzer.cc
qpdf_lin_fuzzer /src/qpdf/fuzz/qpdf_lin_fuzzer.cc 1764 2141 41 82 16052 11277 qpdf_lin_fuzzer.cc
future_qpdf_crypt_fuzzer /src/qpdf/fuzz/qpdf_crypt_fuzzer.cc 1782 2132 41 82 16208 11367 qpdf_crypt_fuzzer.cc
future_qpdf_lin_fuzzer /src/qpdf/fuzz/qpdf_lin_fuzzer.cc 1764 2141 41 82 16052 11277 qpdf_lin_fuzzer.cc
qpdf_crypt_fuzzer /src/qpdf/fuzz/qpdf_crypt_fuzzer.cc 1782 2132 41 82 16208 11367 qpdf_crypt_fuzzer.cc
qpdf_page_fuzzer /src/qpdf/fuzz/qpdf_page_fuzzer.cc 1981 1937 41 101 18217 13073 qpdf_page_fuzzer.cc
qpdf_fuzzer /src/qpdf/fuzz/qpdf_fuzzer.cc 1762 2142 41 82 16045 11274 qpdf_fuzzer.cc
qpdf_crypt_insecure_fuzzer /src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc 1782 2132 41 82 16205 11366 qpdf_crypt_insecure_fuzzer.cc
future_qpdf_fuzzer /src/qpdf/fuzz/qpdf_fuzzer.cc 1762 2142 41 82 16045 11274 qpdf_fuzzer.cc

Project functions overview

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

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

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

Fuzzer details

Fuzzer: hex_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: ascii85_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_hex_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_ascii85_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: tiffpredictor_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

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

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

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

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_dct_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

['do_sarray_io']

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

['do_barray_io']

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

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

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

['jpeg_destroy_compress']

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

['out_of_memory']

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

['__isoc99_sscanf']

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

['out_of_memory']

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

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

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

['jpeg_mem_term']

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

['Pipeline::next() const']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_runlength_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

['Pl_RunLength::flush_encode()']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_lzw_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

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

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_flate_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

['inflateInit_']

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

['crc32']

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

['crc32']

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

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

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

['inflateEnd']

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

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

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

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

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

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

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

['_tr_align', '_tr_stored_block']

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

['Pl_Flate::finish_zopfli()']

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

['deflateEnd']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_pngpredictor_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

['Pl_PNGFilter::encodeRow()']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: pngpredictor_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

['Pl_PNGFilter::encodeRow()']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: flate_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

['inflateInit_']

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

['crc32']

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

['crc32']

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

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

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

['inflateEnd']

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

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

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

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

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

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

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

['_tr_align', '_tr_stored_block']

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

['Pl_Flate::finish_zopfli()']

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

['deflateEnd']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: runlength_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

['Pl_RunLength::flush_encode()']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: lzw_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

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

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_tiffpredictor_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

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

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

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

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_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 2348 75.3%
gold [1:9] 25 0.80%
yellow [10:29] 39 1.25%
greenyellow [30:49] 32 1.02%
lawngreen 50+ 672 21.5%
All colors 3116 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
107090 506957 62 :

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

107090 506957 QPDF::EncryptionParameters::initialize(QPDF&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:658
7088 7088 1 :

['QPDF::pushInheritedAttributesToPage()']

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

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

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

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

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

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

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

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

7086 21246 QPDF_Array*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7086 7169 3 :

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

7138 71088 QPDF::read_xrefTable(longlong) call site: 00000 /src/qpdf/libqpdf/QPDF_objects.cc:735
7086 7090 2 :

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

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

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

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

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

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

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

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

['QPDF::getAllPages()']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: 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 2348 75.3%
gold [1:9] 30 0.96%
yellow [10:29] 48 1.54%
greenyellow [30:49] 14 0.44%
lawngreen 50+ 676 21.6%
All colors 3116 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
107090 506957 62 :

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

107090 506957 QPDF::EncryptionParameters::initialize(QPDF&) call site: 00000 /src/qpdf/libqpdf/QPDF_encryption.cc:658
7088 7088 1 :

['QPDF::pushInheritedAttributesToPage()']

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

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

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

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

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

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

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

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

7086 21246 QPDF_Array*qpdf::BaseHandle::as ()const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:332
7086 7169 3 :

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

7138 71088 QPDF::read_xrefTable(longlong) call site: 00000 /src/qpdf/libqpdf/QPDF_objects.cc:735
7086 7090 2 :

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

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

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

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

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

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

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

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

['QPDF::getAllPages()']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: qpdf_outlines_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 601 17.5%
gold [1:9] 97 2.82%
yellow [10:29] 74 2.15%
greenyellow [30:49] 17 0.49%
lawngreen 50+ 2639 76.9%
All colors 3428 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
7086 7086 1 :

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

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

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

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

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

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

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

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

['deflateInit_']

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

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

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

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

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

['deflateEnd']

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

['deflateEnd']

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

['Pl_RunLength::flush_encode()']

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

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

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

['sha384_short']

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

Runtime coverage analysis

Covered functions
897
Functions that are reachable but not covered
202
Reachable functions
1498
Percentage of reachable functions covered
86.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/qpdf_outlines_fuzzer.cc 7
/src/qpdf/libqpdf/Buffer.cc 8
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 1
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 2
/src/qpdf/libqpdf/BufferInputSource.cc 3
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QIntC.hh 43
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 2
/src/qpdf/libqpdf/QPDF.cc 18
/src/qpdf/libqpdf/QPDF_objects.cc 45
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 12
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 8
/src/qpdf/libqpdf/qpdf/Util.hh 3
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 25
/src/qpdf/include/qpdf/QPDF.hh 9
/src/qpdf/include/qpdf/QPDFObjGen.hh 11
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 18
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 59
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 21
/src/qpdf/libqpdf/QPDFObjectHandle.cc 69
/src/qpdf/libqpdf/QPDFXRefEntry.cc 3
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 12
/src/qpdf/libqpdf/Pl_Buffer.cc 5
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 43
/src/qpdf/libqpdf/MD5.cc 5
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 2
/src/qpdf/libqpdf/QPDFOutlineDocumentHelper.cc 3
/src/qpdf/include/qpdf/QPDFDocumentHelper.hh 1
/src/qpdf/include/qpdf/QPDFOutlineDocumentHelper.hh 3
/src/qpdf/include/qpdf/QPDFOutlineObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFOutlineObjectHelper.cc 5
/src/qpdf/include/qpdf/QPDFObjectHelper.hh 2
/src/qpdf/libqpdf/QPDFObjectHelper.cc 1
/src/qpdf/libqpdf/QPDFDocumentHelper.cc 1
/src/qpdf/libqpdf/QPDF_String.cc 2
/src/qpdf/libqpdf/QPDFNameTreeObjectHelper.cc 7
/src/qpdf/libqpdf/NNTree.cc 28
/src/qpdf/libqpdf/qpdf/NNTree.hh 4
/src/qpdf/include/qpdf/QPDFNameTreeObjectHelper.hh 1

Fuzzer: future_qpdf_outlines_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 621 18.1%
gold [1:9] 102 2.97%
yellow [10:29] 115 3.35%
greenyellow [30:49] 9 0.26%
lawngreen 50+ 2581 75.2%
All colors 3428 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
7086 7086 1 :

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

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

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

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

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

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

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

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

['deflateInit_']

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

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

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

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

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

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

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

['deflateEnd']

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

['deflateEnd']

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

['Pl_RunLength::flush_encode()']

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

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

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: dct_fuzzer

Call tree

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

Call tree overview bitmap:

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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

['do_sarray_io']

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

['do_barray_io']

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

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

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

['jpeg_destroy_compress']

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

['out_of_memory']

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

['__isoc99_sscanf']

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

['out_of_memory']

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

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

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

['jpeg_mem_term']

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

['Pipeline::next() const']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_qpdf_page_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 903 17.3%
gold [1:9] 130 2.50%
yellow [10:29] 90 1.73%
greenyellow [30:49] 38 0.73%
lawngreen 50+ 4032 77.6%
All colors 5193 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

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

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

['deflateInit_']

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

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

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

['deflateEnd']

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

['deflateEnd']

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

['Pl_RunLength::flush_encode()']

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

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

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

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

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

['sha384_short']

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

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

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

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

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_qpdf_crypt_insecure_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1587 34.9%
gold [1:9] 150 3.29%
yellow [10:29] 100 2.19%
greenyellow [30:49] 57 1.25%
lawngreen 50+ 2653 58.3%
All colors 4547 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
9877 9877 1 :

['QPDFWriter::writeLinearized()']

9879 9921 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2224
8347 8347 1 :

['QPDFWriter::writeObjectStream(QPDFObjectHandle)']

8355 8359 QPDFWriter::writeObject(QPDFObjectHandle,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1758
7415 7415 1 :

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

22127 44271 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2118
7254 7254 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7270 32966 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3043
7103 7105 9 :

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

7147 71024 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2945
7086 7086 1 :

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

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

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

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

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

7086 7090 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:475
423 423 1 :

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

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

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

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

['do_sarray_io']

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

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

50 56858 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1829

Runtime coverage analysis

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

Files reached

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

Fuzzer: qpdf_lin_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1000 22.2%
gold [1:9] 118 2.62%
yellow [10:29] 134 2.98%
greenyellow [30:49] 86 1.91%
lawngreen 50+ 3157 70.2%
All colors 4495 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
7086 7086 1 :

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

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

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

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

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

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

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

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

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

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

['do_sarray_io']

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

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

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

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

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

['do_barray_io']

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

['crc32']

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

['crc32']

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

['Pl_RunLength::flush_encode()']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_qpdf_crypt_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 909 20.0%
gold [1:9] 141 3.10%
yellow [10:29] 104 2.28%
greenyellow [30:49] 61 1.34%
lawngreen 50+ 3330 73.2%
All colors 4545 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
7415 7415 1 :

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

14785 44271 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2118
623 1145 4 :

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

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

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

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

['QPDFWriter::computeDeterministicIDData()']

63 7632 QPDFWriter::writeTrailer(QPDFWriter::trailer_e,int,bool,longlong,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1183
34 49737 28 :

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

50 56858 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1829
34 28406 16 :

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

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

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

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

['do_barray_io']

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

['crc32']

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

['crc32']

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

['Pl_RunLength::flush_encode()']

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

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

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_qpdf_lin_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 993 22.0%
gold [1:9] 125 2.78%
yellow [10:29] 102 2.26%
greenyellow [30:49] 98 2.18%
lawngreen 50+ 3177 70.6%
All colors 4495 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
7086 7086 1 :

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

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

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

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

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

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

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

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

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

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

['do_sarray_io']

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

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

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

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

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

['do_barray_io']

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

['crc32']

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

['crc32']

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

['Pl_RunLength::flush_encode()']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: qpdf_crypt_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 936 20.5%
gold [1:9] 135 2.97%
yellow [10:29] 108 2.37%
greenyellow [30:49] 58 1.27%
lawngreen 50+ 3308 72.7%
All colors 4545 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
7415 7415 1 :

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

14785 44271 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2118
623 1145 4 :

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

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

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

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

['do_sarray_io']

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

['QPDFWriter::computeDeterministicIDData()']

63 7632 QPDFWriter::writeTrailer(QPDFWriter::trailer_e,int,bool,longlong,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1183
34 49737 28 :

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

50 56858 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1829
34 28406 16 :

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

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

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

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

['do_barray_io']

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

['crc32']

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

['crc32']

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

['Pl_RunLength::flush_encode()']

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: qpdf_page_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 915 17.6%
gold [1:9] 123 2.36%
yellow [10:29] 103 1.98%
greenyellow [30:49] 34 0.65%
lawngreen 50+ 4018 77.3%
All colors 5193 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

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

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

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

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

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

['deflateInit_']

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

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

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

['deflateEnd']

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

['deflateEnd']

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

['Pl_RunLength::flush_encode()']

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

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

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

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

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

['sha384_short']

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

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

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

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

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

Runtime coverage analysis

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

Files reached

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

Fuzzer: qpdf_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 1359 30.2%
gold [1:9] 118 2.62%
yellow [10:29] 108 2.40%
greenyellow [30:49] 50 1.11%
lawngreen 50+ 2860 63.6%
All colors 4495 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
9877 9877 1 :

['QPDFWriter::writeLinearized()']

9879 9921 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2224
7415 7415 1 :

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

14785 44271 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2118
7254 7254 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7577 32966 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3043
7103 7105 9 :

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

7147 71024 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2945
307 307 1 :

['QPDFWriter::writeEncryptionDictionary()']

307 17341 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3057
252 474 6 :

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

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

['deflateInit_']

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

['do_sarray_io']

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

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

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

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

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

['do_barray_io']

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

['deflateEnd']

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

Runtime coverage analysis

Covered functions
1164
Functions that are reachable but not covered
338
Reachable functions
1762
Percentage of reachable functions covered
80.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/qpdf_fuzzer.cc 9
/src/qpdf/libqpdf/Buffer.cc 8
/src/qpdf/libqpdf/Pl_Discard.cc 2
/src/qpdf/libqpdf/Pipeline.cc 6
/src/qpdf/libqpdf/Pl_DCT.cc 3
/src/qpdf/libqpdf/Pl_PNGFilter.cc 1
/src/qpdf/libqpdf/Pl_RunLength.cc 1
/src/qpdf/libqpdf/Pl_TIFFPredictor.cc 1
/src/qpdf/libqpdf/Pl_Flate.cc 2
/src/qpdf/libqpdf/BufferInputSource.cc 3
/src/qpdf/include/qpdf/InputSource.hh 3
/src/qpdf/include/qpdf/QIntC.hh 43
/usr/local/bin/../include/c++/v1/sstream 2
/usr/local/bin/../include/c++/v1/stdexcept 3
/src/qpdf/libqpdf/QPDF.cc 25
/src/qpdf/libqpdf/QPDF_objects.cc 51
/src/qpdf/libqpdf/qpdf/QPDF_private.hh 30
/src/qpdf/libqpdf/InputSource.cc 7
/src/qpdf/include/qpdf/QTC.hh 1
/src/qpdf/libqpdf/QPDFExc.cc 3
/src/qpdf/libqpdf/QPDFLogger.cc 8
/src/qpdf/include/qpdf/QPDFExc.hh 2
/src/qpdf/libqpdf/QPDFTokenizer.cc 33
/src/qpdf/libqpdf/qpdf/InputSource_private.hh 8
/src/qpdf/libqpdf/qpdf/Util.hh 5
/src/qpdf/include/qpdf/QPDFTokenizer.hh 9
/src/qpdf/libqpdf/QUtil.cc 21
/src/qpdf/include/qpdf/QPDF.hh 11
/src/qpdf/include/qpdf/QPDFObjGen.hh 12
/src/qpdf/include/qpdf/QPDFXRefEntry.hh 2
/src/qpdf/libqpdf/QPDFParser.cc 29
/src/qpdf/libqpdf/qpdf/QPDFParser.hh 3
/src/qpdf/libqpdf/qpdf/QPDFTokenizer_private.hh 4
/src/qpdf/include/qpdf/QPDFObjectHandle.hh 17
/src/qpdf/include/qpdf/ObjectHandle.hh 8
/src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh 64
/src/qpdf/libqpdf/qpdf/QPDFObject_private.hh 47
/src/qpdf/libqpdf/QPDF_Array.cc 16
/src/qpdf/libqpdf/QPDFObjectHandle.cc 76
/src/qpdf/libqpdf/QPDFXRefEntry.cc 4
/src/qpdf/libqpdf/QPDF_Dictionary.cc 13
/src/qpdf/libqpdf/QPDFObject.cc 1
/src/qpdf/libqpdf/Pl_OStream.cc 1
/src/qpdf/include/qpdf/Pipeline.hh 2
/src/qpdf/libqpdf/QPDF_Stream.cc 20
/src/qpdf/libqpdf/Pl_Buffer.cc 5
/src/qpdf/libqpdf/qpdf/SF_FlateLzwDecode.hh 2
/src/qpdf/libqpdf/qpdf/SF_RunLengthDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_DCTDecode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCII85Decode.hh 1
/src/qpdf/libqpdf/qpdf/SF_ASCIIHexDecode.hh 1
/src/qpdf/libqpdf/qpdf/ContentNormalizer.hh 3
/src/qpdf/libqpdf/Pl_Count.cc 3
/src/qpdf/libqpdf/QPDF_encryption.cc 45
/src/qpdf/libqpdf/MD5.cc 7
/src/qpdf/libqpdf/QPDFCryptoProvider.cc 6
/src/qpdf/include/qpdf/QPDFCryptoProvider.hh 1
/src/qpdf/libqpdf/qpdf/MD5.hh 3
/src/qpdf/libqpdf/RC4.cc 3
/src/qpdf/libqpdf/qpdf/RC4.hh 1
/src/qpdf/libqpdf/Pl_SHA2.cc 4
/src/qpdf/libqpdf/Pl_AES_PDF.cc 7
/src/qpdf/libqpdf/CryptoRandomDataProvider.cc 1
/src/qpdf/libqpdf/qpdf/Pl_AES_PDF.hh 1
/src/qpdf/libqpdf/qpdf/Pl_SHA2.hh 1
/src/qpdf/libqpdf/QPDF_pages.cc 4
/src/qpdf/libqpdf/QPDF_optimization.cc 9
/src/qpdf/libqpdf/QPDFWriter.cc 62
/src/qpdf/libqpdf/qpdf/Pipeline_private.hh 9
/src/qpdf/libqpdf/qpdf/ObjTable.hh 19
/src/qpdf/libqpdf/qpdf/QPDFWriter_private.hh 1
/src/qpdf/libqpdf/QPDF_linearization.cc 17
/src/qpdf/libqpdf/QPDFSystemError.cc 2
/src/qpdf/include/qpdf/QPDFSystemError.hh 1
/src/qpdf/libqpdf/Pl_StdioFile.cc 1
/src/qpdf/libqpdf/Pl_MD5.cc 4
/src/qpdf/include/qpdf/QPDFWriter.hh 1
/src/qpdf/libqpdf/QPDF_String.cc 3
/src/qpdf/libqpdf/Pl_RC4.cc 1
/src/qpdf/include/qpdf/QUtil.hh 1
/src/qpdf/libqpdf/BitWriter.cc 4
/src/qpdf/libqpdf/qpdf/bits_functions.hh 1

Fuzzer: qpdf_crypt_insecure_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1600 35.1%
gold [1:9] 103 2.26%
yellow [10:29] 136 2.99%
greenyellow [30:49] 54 1.18%
lawngreen 50+ 2654 58.3%
All colors 4547 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
9877 9877 1 :

['QPDFWriter::writeLinearized()']

9879 9921 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2224
8347 8347 1 :

['QPDFWriter::writeObjectStream(QPDFObjectHandle)']

8355 8359 QPDFWriter::writeObject(QPDFObjectHandle,int) call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1758
7415 7415 1 :

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

22127 44271 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2118
7254 7254 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7270 32966 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3043
7103 7105 9 :

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

7147 71024 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2945
7086 7086 1 :

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

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

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

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

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

7086 7090 QPDFObjectHandle::as_stream(qpdf::typed)const call site: 00000 /src/qpdf/libqpdf/qpdf/QPDFObjectHandle_private.hh:475
423 423 1 :

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

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

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

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

['do_sarray_io']

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

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

50 56858 QPDFWriter::generateID() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:1829

Runtime coverage analysis

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

Files reached

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

Fuzzer: future_qpdf_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1369 30.4%
gold [1:9] 107 2.38%
yellow [10:29] 128 2.84%
greenyellow [30:49] 52 1.15%
lawngreen 50+ 2839 63.1%
All colors 4495 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
9877 9877 1 :

['QPDFWriter::writeLinearized()']

9879 9921 QPDFWriter::write() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2224
7415 7415 1 :

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

14785 44271 QPDFWriter::doWriteSetup() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2118
7254 7254 1 :

['QPDFWriter::enqueueObjectsPCLm()']

7577 32966 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3043
7103 7105 9 :

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

7147 71024 QPDFWriter::enqueueObjectsStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:2945
307 307 1 :

['QPDFWriter::writeEncryptionDictionary()']

307 17341 QPDFWriter::writeStandard() call site: 00000 /src/qpdf/libqpdf/QPDFWriter.cc:3057
252 474 6 :

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

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

['deflateInit_']

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

['do_sarray_io']

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

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

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

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

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

['do_barray_io']

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

['deflateEnd']

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

Runtime coverage analysis

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

Files reached

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

Analyses and suggestions

Optimal target analysis

Remaining optimal interesting functions

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

Func name Functions filename Arg count Args Function depth hitcount instr count bb count cyclomatic complexity Reachable functions Incoming references total cyclomatic complexity Unreached complexity
QPDF::showLinearizationData() /src/qpdf/libqpdf/QPDF_linearization.cc 1 ['N/A'] 31 0 94 17 12 1398 0 8717 1426
QPDFPageObjectHelper::flattenRotation(QPDFAcroFormDocumentHelper*) /src/qpdf/libqpdf/QPDFPageObjectHelper.cc 2 ['N/A', 'N/A'] 36 0 1120 192 142 1703 0 10602 1415
encode_mcu_huff /src/libjpeg-turbo/src/jchuff.c 2 ['N/A', 'N/A'] 3 0 232 33 14 7 0 595 595
QPDF::JSONReactor::dictionaryItem(std::__1::basic_string ,std::__1::allocator >const&,JSONconst&) /src/qpdf/libqpdf/QPDF_json.cc 3 ['N/A', 'N/A', 'N/A'] 29 0 1481 307 286 1388 0 7857 540
JSON::checkSchemaInternal(JSON::JSON_value*,JSON::JSON_value*,unsignedlong,std::__1::list ,std::__1::allocator >,std::__1::allocator ,std::__1::allocator >>>&,std::__1::basic_string ,std::__1::allocator >) /src/qpdf/libqpdf/JSON.cc 5 ['N/A', 'N/A', 'size_t', 'N/A', 'N/A'] 2 0 1106 198 164 5 3 332 328
QPDF::writeJSON(int,Pipeline*,qpdf_stream_decode_level_e,qpdf_json_stream_data_e,std::__1::basic_string ,std::__1::allocator >const&,std::__1::set ,std::__1::allocator >,std::__1::less ,std::__1::allocator >>,std::__1::allocator ,std::__1::allocator >>>) /src/qpdf/libqpdf/QPDF_json.cc 7 ['N/A', 'int', 'N/A', 'int', 'int', 'N/A', 'N/A'] 32 0 65 6 6 1418 0 7899 300
(anonymousnamespace)::InlineImageTracker::handleToken(QPDFTokenizer::Tokenconst&) /src/qpdf/libqpdf/QPDFPageObjectHelper.cc 2 ['N/A', 'N/A'] 31 0 380 68 52 1294 0 7464 265

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

Functions statically reachable by fuzzers
54.0%
1649 / 3048
Cyclomatic complexity statically reachable by fuzzers
71.0%
24376 / 34291

All functions overview

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

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

Fuzz engine guidance

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

/src/qpdf/fuzz/hex_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/ascii85_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/hex_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/ascii85_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/tiffpredictor_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/dct_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/runlength_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/lzw_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/flate_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/pngpredictor_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/pngpredictor_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/flate_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/runlength_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/lzw_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/tiffpredictor_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/json_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/json_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_outlines_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_outlines_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/dct_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_page_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

-focus_function=['QPDFWriter::prepareFileForWrite()', 'QPDFWriter::writeEncryptionDictionary()', 'ObjTable::large_element(unsigned long)', 'BitWriter::flush()', 'QPDFWriter::writeObject(QPDFObjectHandle, int)', 'QPDFWriter::writeStandard()', 'QPDFWriter::write()', 'QPDFWriter::activatePipelineStack(QPDFWriter::PipelinePopper&, std::__1::basic_string, std::__1::allocator >&)', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'BitWriter::writeBits(unsigned long long, unsigned long)']

/src/qpdf/fuzz/qpdf_lin_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_crypt_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_lin_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_crypt_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

-focus_function=['QPDFWriter::write()', 'QPDFWriter::write()', 'QPDF::getTrailer()', 'QPDFWriter::writeLinearized()', 'QPDF::decryptStream(std::__1::shared_ptr, std::__1::shared_ptr, QPDF&, Pipeline*&, QPDFObjGen, QPDFObjectHandle&, bool, std::__1::unique_ptr >&)', 'QPDFWriter::writeLinearized()', 'qpdf::BaseHandle::copy(bool) const', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'qpdf::BaseHandle::unparse() const', 'QPDFWriter::setEncryptionParameters(char const*, char const*)']

/src/qpdf/fuzz/qpdf_page_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

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

/src/qpdf/fuzz/qpdf_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

-focus_function=['QPDFWriter::prepareFileForWrite()', 'QPDFWriter::writeObjectStream(QPDFObjectHandle)', 'BitWriter::flush()', 'QPDFWriter::writeStandard()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'QPDFWriter::generateID()', 'BitWriter::writeBits(unsigned long long, unsigned long)', 'QPDFWriter::openObject(int)', 'QPDFWriter::unparseObject(QPDFObjectHandle, int, int, unsigned long, bool)', 'QPDFWriter::setMinimumPDFVersion(std::__1::basic_string, std::__1::allocator > const&, int)']

/src/qpdf/fuzz/qpdf_crypt_insecure_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

-focus_function=['QPDFWriter::prepareFileForWrite()', 'QPDFWriter::writeEncryptionDictionary()', 'ObjTable::large_element(unsigned long)', 'BitWriter::flush()', 'QPDFWriter::writeObject(QPDFObjectHandle, int)', 'QPDFWriter::writeStandard()', 'QPDFWriter::write()', 'QPDFWriter::activatePipelineStack(QPDFWriter::PipelinePopper&, std::__1::basic_string, std::__1::allocator >&)', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'BitWriter::writeBits(unsigned long long, unsigned long)']

/src/qpdf/fuzz/qpdf_fuzzer.cc

Dictionary

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


Fuzzer function priority

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

-focus_function=['QPDFWriter::prepareFileForWrite()', 'QPDFWriter::writeObjectStream(QPDFObjectHandle)', 'BitWriter::flush()', 'QPDFWriter::writeStandard()', 'QPDFWriter::enqueueObject(QPDFObjectHandle)', 'QPDFWriter::generateID()', 'BitWriter::writeBits(unsigned long long, unsigned long)', 'QPDFWriter::openObject(int)', 'QPDFWriter::unparseObject(QPDFObjectHandle, int, int, unsigned long, bool)', 'QPDFWriter::setMinimumPDFVersion(std::__1::basic_string, std::__1::allocator > const&, int)']

Runtime coverage analysis

This section shows analysis of runtime coverage data.

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

Complex functions with low coverage

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

Files and Directories in report

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

Files in report

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

Directories in report

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

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
hex_fuzzer fuzzerLogFile-0-okygYNSm4e.data fuzzerLogFile-0-okygYNSm4e.data.yaml hex_fuzzer.covreport
ascii85_fuzzer fuzzerLogFile-0-eOJc950HgZ.data fuzzerLogFile-0-eOJc950HgZ.data.yaml ascii85_fuzzer.covreport
future_hex_fuzzer fuzzerLogFile-0-DHf2yQETcQ.data fuzzerLogFile-0-DHf2yQETcQ.data.yaml future_hex_fuzzer.covreport
future_ascii85_fuzzer fuzzerLogFile-0-QQ4S8CF4d3.data fuzzerLogFile-0-QQ4S8CF4d3.data.yaml future_ascii85_fuzzer.covreport
tiffpredictor_fuzzer fuzzerLogFile-0-LV7iU0IEgo.data fuzzerLogFile-0-LV7iU0IEgo.data.yaml tiffpredictor_fuzzer.covreport
future_dct_fuzzer fuzzerLogFile-0-ANGOmfU2oQ.data fuzzerLogFile-0-ANGOmfU2oQ.data.yaml future_dct_fuzzer.covreport
future_runlength_fuzzer fuzzerLogFile-0-5Pqzmx36LB.data fuzzerLogFile-0-5Pqzmx36LB.data.yaml future_runlength_fuzzer.covreport
future_lzw_fuzzer fuzzerLogFile-0-2f2cO7ZDmZ.data fuzzerLogFile-0-2f2cO7ZDmZ.data.yaml future_lzw_fuzzer.covreport
future_flate_fuzzer fuzzerLogFile-0-vzojEkEtgT.data fuzzerLogFile-0-vzojEkEtgT.data.yaml future_flate_fuzzer.covreport
future_pngpredictor_fuzzer fuzzerLogFile-0-W5yJaG1PIF.data fuzzerLogFile-0-W5yJaG1PIF.data.yaml future_pngpredictor_fuzzer.covreport
pngpredictor_fuzzer fuzzerLogFile-0-E1mUJQgNYd.data fuzzerLogFile-0-E1mUJQgNYd.data.yaml pngpredictor_fuzzer.covreport
flate_fuzzer fuzzerLogFile-0-rXQLTkepNU.data fuzzerLogFile-0-rXQLTkepNU.data.yaml flate_fuzzer.covreport
runlength_fuzzer fuzzerLogFile-0-AYHSzpfFlL.data fuzzerLogFile-0-AYHSzpfFlL.data.yaml runlength_fuzzer.covreport
lzw_fuzzer fuzzerLogFile-0-v63sn29JYr.data fuzzerLogFile-0-v63sn29JYr.data.yaml lzw_fuzzer.covreport
future_tiffpredictor_fuzzer fuzzerLogFile-0-myJ4jT8zQs.data fuzzerLogFile-0-myJ4jT8zQs.data.yaml future_tiffpredictor_fuzzer.covreport
future_json_fuzzer fuzzerLogFile-0-7IjgLn60YO.data fuzzerLogFile-0-7IjgLn60YO.data.yaml future_json_fuzzer.covreport
json_fuzzer fuzzerLogFile-0-1VJhxtvGGP.data fuzzerLogFile-0-1VJhxtvGGP.data.yaml json_fuzzer.covreport
qpdf_outlines_fuzzer fuzzerLogFile-0-A6jDBVQ6kQ.data fuzzerLogFile-0-A6jDBVQ6kQ.data.yaml qpdf_outlines_fuzzer.covreport
future_qpdf_outlines_fuzzer fuzzerLogFile-0-6e6IaXrZI7.data fuzzerLogFile-0-6e6IaXrZI7.data.yaml future_qpdf_outlines_fuzzer.covreport
dct_fuzzer fuzzerLogFile-0-FUZRK5xjoI.data fuzzerLogFile-0-FUZRK5xjoI.data.yaml dct_fuzzer.covreport
future_qpdf_page_fuzzer fuzzerLogFile-0-X0TmHYJl6Y.data fuzzerLogFile-0-X0TmHYJl6Y.data.yaml future_qpdf_page_fuzzer.covreport
future_qpdf_crypt_insecure_fuzzer fuzzerLogFile-0-Eqrx4bGwsx.data fuzzerLogFile-0-Eqrx4bGwsx.data.yaml future_qpdf_crypt_insecure_fuzzer.covreport
qpdf_lin_fuzzer fuzzerLogFile-0-Zs58e5ZdjV.data fuzzerLogFile-0-Zs58e5ZdjV.data.yaml qpdf_lin_fuzzer.covreport
future_qpdf_crypt_fuzzer fuzzerLogFile-0-Zv1jWTzu4J.data fuzzerLogFile-0-Zv1jWTzu4J.data.yaml future_qpdf_crypt_fuzzer.covreport
future_qpdf_lin_fuzzer fuzzerLogFile-0-ZbqNtjwkSg.data fuzzerLogFile-0-ZbqNtjwkSg.data.yaml future_qpdf_lin_fuzzer.covreport
qpdf_crypt_fuzzer fuzzerLogFile-0-olt7F4aRhL.data fuzzerLogFile-0-olt7F4aRhL.data.yaml qpdf_crypt_fuzzer.covreport
qpdf_page_fuzzer fuzzerLogFile-0-L2R1HF4wbM.data fuzzerLogFile-0-L2R1HF4wbM.data.yaml qpdf_page_fuzzer.covreport
qpdf_fuzzer fuzzerLogFile-0-SfLgvFE7Uw.data fuzzerLogFile-0-SfLgvFE7Uw.data.yaml qpdf_fuzzer.covreport
qpdf_crypt_insecure_fuzzer fuzzerLogFile-0-YFEjDl3SRD.data fuzzerLogFile-0-YFEjDl3SRD.data.yaml qpdf_crypt_insecure_fuzzer.covreport
future_qpdf_fuzzer fuzzerLogFile-0-2bmKrXPQQV.data fuzzerLogFile-0-2bmKrXPQQV.data.yaml future_qpdf_fuzzer.covreport