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

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 178 31.7%
gold [1:9] 6 1.06%
yellow [10:29] 9 1.60%
greenyellow [30:49] 1 0.17%
lawngreen 50+ 367 65.4%
All colors 561 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
83 262 mdb_read_next_dpg call site: 00262 mdb_index_find_next
14 163 load_options call site: 00163 mdb_buffer_dump
11 393 mdb_col_to_string call site: 00393 mdb_test_string
9 429 mdb_read_row_at call site: 00429 mdb_test_sarg_node_3vl
8 26 mdb_init_backends call site: 00026 g_strconcat
6 36 mdb_init_backends call site: 00036 g_strconcat
4 47 mdb_init_backends call site: 00047 g_utf8_strdown
3 7 mdb_set_default_backend call site: 00007 mdb_remove_backends
3 53 mdb_init_backends call site: 00053 g_strconcat
3 537 mdb_read_props call site: 00537 mdb_debug
2 187 mdb_debug call site: 00187 vfprintf
2 360 mdb_col_to_string call site: 00360 g_strdup

Runtime coverage analysis

Covered functions
108
Functions that are reachable but not covered
71
Reachable functions
179
Percentage of reachable functions covered
60.34%
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
fuzz/fuzz_mdb.c 1
libmdb/file.c 13
libmdb/backend.c 12
libmdb/fakeglib.c 18
libmdb/data.c 29
libmdb/rc4.c 3
libmdb/catalog.c 2
libmdb/props.c 8
libmdb/iconv.c 6
libmdb/table.c 11
libmdb/index.c 14
libmdb/options.c 3
libmdb/dump.c 1
libmdb/map.c 3
libmdb/sargs.c 11
libmdb/like.c 2
libmdb/money.c 5
libmdb/write.c 3

Fuzzer: fuzz_write

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 226 31.8%
gold [1:9] 21 2.95%
yellow [10:29] 9 1.26%
greenyellow [30:49] 11 1.54%
lawngreen 50+ 443 62.3%
All colors 710 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
82 263 mdb_fetch_row call site: 00263 mdb_index_find_next
39 643 mdb_update_indexes call site: 00643 mdb_update_index
14 163 load_options call site: 00163 mdb_buffer_dump
11 393 mdb_col_to_string call site: 00393 mdb_test_string
9 429 mdb_read_row_at call site: 00429 mdb_test_sarg_node_3vl
8 26 mdb_init_backends call site: 00026 g_strconcat
6 36 mdb_init_backends call site: 00036 g_strconcat
4 47 mdb_init_backends call site: 00047 g_utf8_strdown
3 7 mdb_set_default_backend call site: 00007 mdb_remove_backends
3 53 mdb_init_backends call site: 00053 g_strconcat
3 496 mdb_ole_read_next call site: 00496 reallocf
3 537 mdb_read_props call site: 00537 mdb_debug

Runtime coverage analysis

Covered functions
134
Functions that are reachable but not covered
80
Reachable functions
214
Percentage of reachable functions covered
62.62%
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
fuzz/fuzz_write.c 4
libmdb/file.c 13
libmdb/backend.c 12
libmdb/fakeglib.c 18
libmdb/data.c 31
libmdb/rc4.c 3
libmdb/catalog.c 2
libmdb/props.c 8
libmdb/iconv.c 6
libmdb/table.c 12
libmdb/index.c 18
libmdb/options.c 3
libmdb/dump.c 1
libmdb/map.c 5
libmdb/sargs.c 11
libmdb/like.c 2
libmdb/money.c 5
libmdb/write.c 19
libmdb/worktable.c 5

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/mdbtools/src/libmdb/map.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/catalog.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/money.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/fuzz/fuzz_mdb.c ['fuzz_mdb'] ['fuzz_mdb']
/src/mdbtools/src/libmdb/file.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/fuzz/fuzz_write.c ['fuzz_write'] ['fuzz_write']
/src/mdbtools/src/libmdb/rc4.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/table.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/write.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/backend.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/options.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/data.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/props.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/iconv.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/index.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/sargs.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/dump.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/worktable.c ['fuzz_write'] ['fuzz_write']
/src/mdbtools/src/libmdb/fakeglib.c ['fuzz_mdb', 'fuzz_write'] ['fuzz_mdb', 'fuzz_write']
/src/mdbtools/src/libmdb/like.c ['fuzz_mdb', 'fuzz_write'] []

Directories in report

Directory
/src/mdbtools/src/libmdb/
/src/mdbtools/src/fuzz/