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

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: tar

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 808 75.4%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 3 0.28%
lawngreen 50+ 260 24.2%
All colors 1071 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
110 924 Archive::_entries call site: 00924 Builder::append_file
97 826 Header::entry_type call site: 00826 nul_bytes_in_path
44 628 append_file call site: 00628 copy_path_into_inner
44 780 Header::as_old_mut call site: 00780 Header::set_metadata
38 587 prepare_header_sparse call site: 00587 Header::set_metadata
33 130 copy_into call site: 00130 copy_path_into_inner
30 0 EP call site: 00000 FuzzInput::arbitrary
30 457 truncate call site: 00457 copy_path_into_inner
23 714 tar::Header::new_gnu call site: 00714 Builder::append_link
21 680 EntriesFields::skip call site: 00680 GnuSparseHeader::set_offset
19 1051 Header::path_bytes call site: 01051 nul_bytes_in_path
18 568 find_sparse_entries_seek call site: 00568

Runtime coverage analysis

Covered functions
299
Functions that are reachable but not covered
61
Reachable functions
139
Percentage of reachable functions covered
56.12%
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.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
fuzz/fuzz_targets/tar.rs 49
tests/all.rs 48
src/header.rs 87
src/archive.rs 34
src/lib.rs 1
src/builder.rs 80
tests/header/mod.rs 8
tests/entry.rs 8
src/entry.rs 2
src/pax.rs 13

Fuzzer: archive

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 342 63.9%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 193 36.0%
All colors 535 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
45 461 Archive::entries call site: 00461 copy_path_into_inner
33 251 copy_into call site: 00251 copy_path_into_inner
31 0 EP call site: 00000 nul_bytes_in_path
27 507 Archive::entries call site: 00507 Header::set_size
23 426 Builder::get_mut call site: 00426 Builder::append_data
22 200 Header::calculate_cksum call site: 00200 copy_path_into_inner
21 385 Header::set_metadata_in_mode call site: 00385 Header::set_link_name
19 113 other call site: 00113 Header::set_device_minor
15 409 append_fs call site: 00409 nul_bytes_in_path
14 143 prepare_header_path call site: 00143 Header::set_mtime
9 37 num_field_wrapper_into call site: 00037 numeric_extended_into
9 47 num_field_wrapper_into call site: 00047

Runtime coverage analysis

Covered functions
333
Functions that are reachable but not covered
34
Reachable functions
89
Percentage of reachable functions covered
61.8%
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.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
fuzz/fuzz_targets/archive.rs 28
fuzz/fuzz_targets/tar.rs 5
tests/all.rs 25
src/builder.rs 48
src/header.rs 85
src/lib.rs 1
tests/header/mod.rs 4
src/archive.rs 4

Files and Directories in report