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

Fuzzer details

Fuzzer: uncompress2_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 1 8.33%
gold [1:9] 1 8.33%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 10 83.3%
All colors 12 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 198 mz_inflate call site: 00006 /src/miniz/build/amalgamation/miniz.c:467
0 0 None 0 3 tinfl_decompress call site: 00007 /src/miniz/build/amalgamation/miniz.c:2485
0 0 None 0 0 tinfl_decompress call site: 00007 /src/miniz/build/amalgamation/miniz.c:2457
0 0 None 0 0 tinfl_decompress call site: 00008 /src/miniz/build/amalgamation/miniz.c:2860

Runtime coverage analysis

Covered functions
10
Functions that are reachable but not covered
0
Reachable functions
10
Percentage of reachable functions covered
100.0%
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
tests/uncompress2_fuzzer.c 1
build/amalgamation/miniz.c 9

Fuzzer: uncompress_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 1 7.69%
gold [1:9] 1 7.69%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 11 84.6%
All colors 13 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 198 mz_inflate call site: 00007 /src/miniz/build/amalgamation/miniz.c:467
0 0 None 0 3 tinfl_decompress call site: 00008 /src/miniz/build/amalgamation/miniz.c:2485
0 0 None 0 0 tinfl_decompress call site: 00008 /src/miniz/build/amalgamation/miniz.c:2457
0 0 None 0 0 tinfl_decompress call site: 00009 /src/miniz/build/amalgamation/miniz.c:2860

Runtime coverage analysis

Covered functions
11
Functions that are reachable but not covered
0
Reachable functions
11
Percentage of reachable functions covered
100.0%
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
tests/uncompress_fuzzer.c 1
build/amalgamation/miniz.c 10

Fuzzer: large_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 12 21.8%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 43 78.1%
All colors 55 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 271 1 :

['tdefl_compress_block']

0 271 tdefl_flush_block call site: 00016 /src/miniz/build/amalgamation/miniz.c:1330
0 229 1 :

['mz_inflate']

4 237 test_large_inflate call site: 00048 /src/miniz/tests/large_fuzzer.c:97
0 0 None 2 2 test_large_deflate call site: 00033 /src/miniz/tests/large_fuzzer.c:52
0 0 None 2 2 test_large_deflate call site: 00037 /src/miniz/tests/large_fuzzer.c:66
0 0 None 0 812 tdefl_compress call site: 00012 /src/miniz/build/amalgamation/miniz.c:1949
0 0 None 0 360 tdefl_compress_normal call site: 00014 /src/miniz/build/amalgamation/miniz.c:1839
0 0 None 0 258 tdefl_compress_block call site: 00016 /src/miniz/build/amalgamation/miniz.c:1247
0 0 None 0 198 mz_inflate call site: 00048 /src/miniz/build/amalgamation/miniz.c:467
0 0 None 0 198 mz_inflate call site: 00051 /src/miniz/build/amalgamation/miniz.c:535
0 0 None 0 5 tdefl_compress call site: 00030 /src/miniz/build/amalgamation/miniz.c:1975
0 0 None 0 3 tinfl_decompress call site: 00049 /src/miniz/build/amalgamation/miniz.c:2497
0 0 None 0 3 tinfl_decompress call site: 00050 /src/miniz/build/amalgamation/miniz.c:2611

Runtime coverage analysis

Covered functions
33
Functions that are reachable but not covered
4
Reachable functions
34
Percentage of reachable functions covered
88.24%
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
tests/large_fuzzer.c 3
build/amalgamation/miniz.c 28

Fuzzer: small_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 4 7.14%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 52 92.8%
All colors 56 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
2 2 1 :

['exit']

2 2 test_inflate call site: 00053 /src/miniz/tests/small_fuzzer.c:93
0 271 1 :

['tdefl_compress_block']

0 271 tdefl_flush_block call site: 00018 /src/miniz/build/amalgamation/miniz.c:1330
0 0 None 6 10 test_inflate call site: 00046 /src/miniz/tests/small_fuzzer.c:85
0 0 None 0 360 tdefl_compress_normal call site: 00016 /src/miniz/build/amalgamation/miniz.c:1837
0 0 None 0 360 tdefl_compress_normal call site: 00016 /src/miniz/build/amalgamation/miniz.c:1864
0 0 None 0 198 mz_inflate call site: 00046 /src/miniz/build/amalgamation/miniz.c:467
0 0 None 0 198 mz_inflate call site: 00049 /src/miniz/build/amalgamation/miniz.c:535
0 0 None 0 5 tdefl_compress call site: 00032 /src/miniz/build/amalgamation/miniz.c:1975
0 0 None 0 3 tinfl_decompress call site: 00047 /src/miniz/build/amalgamation/miniz.c:2502
0 0 None 0 3 tinfl_decompress call site: 00047 /src/miniz/build/amalgamation/miniz.c:2507
0 0 None 0 3 tinfl_decompress call site: 00048 /src/miniz/build/amalgamation/miniz.c:2664
0 0 None 0 3 tinfl_decompress call site: 00048 /src/miniz/build/amalgamation/miniz.c:2677

Runtime coverage analysis

Covered functions
36
Functions that are reachable but not covered
4
Reachable functions
37
Percentage of reachable functions covered
89.19%
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
tests/small_fuzzer.c 3
build/amalgamation/miniz.c 30

Fuzzer: checksum_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 0 0.0%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 5 100.%
All colors 5 100

Runtime coverage analysis

Covered functions
3
Functions that are reachable but not covered
0
Reachable functions
3
Percentage of reachable functions covered
100.0%
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
tests/checksum_fuzzer.c 1
build/amalgamation/miniz.c 2

Fuzzer: flush_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 3 7.5%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 37 92.5%
All colors 40 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 271 1 :

['tdefl_compress_block']

0 271 tdefl_flush_block call site: 00018 /src/miniz/build/amalgamation/miniz.c:1330
0 0 None 4 8 test_flush call site: 00036 /src/miniz/tests/flush_fuzzer.c:52
0 0 None 0 812 tdefl_compress call site: 00014 /src/miniz/build/amalgamation/miniz.c:1949
0 0 None 0 360 tdefl_compress_normal call site: 00016 /src/miniz/build/amalgamation/miniz.c:1837
0 0 None 0 360 tdefl_compress_normal call site: 00016 /src/miniz/build/amalgamation/miniz.c:1864
0 0 None 0 0 tdefl_compress call site: 00014 /src/miniz/build/amalgamation/miniz.c:1920
0 0 None 0 0 tdefl_compress call site: 00014 /src/miniz/build/amalgamation/miniz.c:1938
0 0 None 0 0 tdefl_compress call site: 00016 /src/miniz/build/amalgamation/miniz.c:1963
0 0 None 0 0 tdefl_compress call site: 00032 /src/miniz/build/amalgamation/miniz.c:1972
0 0 None 0 0 tdefl_create_comp_flags_from_zip_params call site: 00008 /src/miniz/build/amalgamation/miniz.c:2122
0 0 None 0 0 tdefl_create_comp_flags_from_zip_params call site: 00008 /src/miniz/build/amalgamation/miniz.c:2124
0 0 None 0 0 tdefl_create_comp_flags_from_zip_params call site: 00008 /src/miniz/build/amalgamation/miniz.c:2126

Runtime coverage analysis

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

Files reached

filename functions hit
tests/flush_fuzzer.c 2
build/amalgamation/miniz.c 24

Fuzzer: zip_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 11 18.3%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 49 81.6%
All colors 60 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 6 6 mz_zip_reader_locate_file_v2 call site: 00046 /src/miniz/build/amalgamation/miniz.c:4430
0 0 None 2 2 mz_zip_reader_end_internal call site: 00015 /src/miniz/build/amalgamation/miniz.c:3911
0 0 None 0 272 mz_zip_reader_extract_to_mem_no_alloc1 call site: 00053 /src/miniz/build/amalgamation/miniz.c:4497
0 0 None 0 205 mz_zip_reader_extract_to_mem_no_alloc1 call site: 00055 /src/miniz/build/amalgamation/miniz.c:4552
0 0 None 0 205 mz_zip_reader_extract_to_mem_no_alloc1 call site: 00055 /src/miniz/build/amalgamation/miniz.c:4587
0 0 None 0 3 tinfl_decompress call site: 00036 /src/miniz/build/amalgamation/miniz.c:2480
0 0 None 0 0 tinfl_decompress call site: 00036 /src/miniz/build/amalgamation/miniz.c:2457
0 0 None 0 0 tinfl_decompress call site: 00037 /src/miniz/build/amalgamation/miniz.c:2855
0 0 None 0 0 mz_zip_reader_get_filename call site: 00041 /src/miniz/build/amalgamation/miniz.c:7792
0 0 None 0 0 mz_zip_reader_end_internal call site: 00015 /src/miniz/build/amalgamation/miniz.c:3929
0 0 None 0 0 mz_zip_reader_extract_to_mem_no_alloc1 call site: 00057 /src/miniz/build/amalgamation/miniz.c:4624
0 0 None 0 0 mz_zip_array_ensure_capacity call site: 00011 /src/miniz/build/amalgamation/miniz.c:3363

Runtime coverage analysis

Covered functions
41
Functions that are reachable but not covered
7
Reachable functions
41
Percentage of reachable functions covered
82.93%
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
tests/zip_fuzzer.c 1
build/amalgamation/miniz.c 34

Fuzzer: compress_fuzzer

Call tree

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

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 4 7.01%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 53 92.9%
All colors 57 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 485 2 :

['tdefl_get_adler32', 'tdefl_compress']

0 485 mz_deflate call site: 00034 /src/miniz/build/amalgamation/miniz.c:282
0 271 1 :

['tdefl_compress_block']

0 271 tdefl_flush_block call site: 00018 /src/miniz/build/amalgamation/miniz.c:1330
0 0 None 0 812 tdefl_compress call site: 00014 /src/miniz/build/amalgamation/miniz.c:1949
0 0 None 0 198 mz_inflate call site: 00043 /src/miniz/build/amalgamation/miniz.c:467
0 0 None 0 5 tdefl_compress call site: 00032 /src/miniz/build/amalgamation/miniz.c:1975
0 0 None 0 4 mz_compress2 call site: 00013 /src/miniz/build/amalgamation/miniz.c:339
0 0 None 0 3 tinfl_decompress call site: 00044 /src/miniz/build/amalgamation/miniz.c:2485
0 0 None 0 0 tdefl_compress call site: 00014 /src/miniz/build/amalgamation/miniz.c:1920
0 0 None 0 0 tdefl_compress call site: 00014 /src/miniz/build/amalgamation/miniz.c:1938
0 0 None 0 0 tdefl_compress call site: 00016 /src/miniz/build/amalgamation/miniz.c:1963
0 0 None 0 0 tdefl_compress call site: 00032 /src/miniz/build/amalgamation/miniz.c:1972
0 0 None 0 0 tdefl_create_comp_flags_from_zip_params call site: 00009 /src/miniz/build/amalgamation/miniz.c:2122

Runtime coverage analysis

Covered functions
40
Functions that are reachable but not covered
3
Reachable functions
40
Percentage of reachable functions covered
92.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
tests/compress_fuzzer.c 4
build/amalgamation/miniz.c 33

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
mz_zip_add_mem_to_archive_file_in_place /src/miniz/build/amalgamation/miniz.c 7 ['char *', 'char *', 'char *', 'size_t ', 'char *', 'N/A', 'int '] 4 0 19 3 2 63 0 957 279
mz_zip_writer_add_from_zip_reader /src/miniz/build/amalgamation/miniz.c 3 ['struct.mz_zip_archive *', 'struct.mz_zip_archive *', 'int '] 2 0 1690 207 82 10 0 178 107
mz_zip_writer_add_file /src/miniz/build/amalgamation/miniz.c 6 ['struct.mz_zip_archive *', 'char *', 'char *', 'char *', 'N/A', 'int '] 6 0 76 12 6 40 0 670 91

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

Functions statically reachable by fuzzers
61.6%
103/167
Cyclomatic complexity statically reachable by fuzzers
83.6%
1755 / 2099

All functions overview

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

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

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/miniz/tests/uncompress2_fuzzer.c ['uncompress2_fuzzer'] ['uncompress2_fuzzer']
/usr/include/x86_64-linux-gnu/sys/stat.h [] []
/src/miniz/tests/flush_fuzzer.c ['flush_fuzzer'] ['flush_fuzzer']
/src/miniz/tests/zip_fuzzer.c ['zip_fuzzer'] ['zip_fuzzer']
/src/miniz/tests/uncompress_fuzzer.c ['uncompress_fuzzer'] ['uncompress_fuzzer']
/src/miniz/build/amalgamation/miniz.c ['uncompress2_fuzzer', 'uncompress_fuzzer', 'large_fuzzer', 'small_fuzzer', 'checksum_fuzzer', 'flush_fuzzer', 'zip_fuzzer', 'compress_fuzzer'] ['uncompress2_fuzzer', 'uncompress_fuzzer', 'large_fuzzer', 'small_fuzzer', 'checksum_fuzzer', 'flush_fuzzer', 'zip_fuzzer', 'compress_fuzzer']
/src/miniz/tests/compress_fuzzer.c ['compress_fuzzer'] ['compress_fuzzer']
/src/miniz/tests/large_fuzzer.c ['large_fuzzer'] ['large_fuzzer']
/src/miniz/tests/checksum_fuzzer.c ['checksum_fuzzer'] ['checksum_fuzzer']
/src/miniz/tests/small_fuzzer.c ['small_fuzzer'] ['small_fuzzer']

Directories in report

Directory
/usr/include/x86_64-linux-gnu/sys/
/src/miniz/build/amalgamation/
/src/miniz/tests/