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

Fuzzer details

Fuzzer: midx_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 56 33.1%
gold [1:9] 16 9.46%
yellow [10:29] 9 5.32%
greenyellow [30:49] 1 0.59%
lawngreen 50+ 87 51.4%
All colors 169 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
229 229 2 :

['midx_parse_object_large_offsets', 'midx_parse_object_offsets']

229 229 git_midx_parse call site: 00147 /src/libgit2/src/libgit2/midx.c:280
222 332 2 :

['git_str_grow', 'git_error_set_oom']

222 332 git_str_vprintf call site: 00020 /src/libgit2/src/util/str.c:529
160 160 5 :

['compute_minrun', 'check_invariant', 'collapse', 'count_run', 'merge']

160 220 git__tsort_r call site: 00000 /src/libgit2/src/util/tsort.c:346
121 121 1 :

['get_passwd_home']

236 350 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
121 121 1 :

['get_passwd_home']

236 236 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356
115 115 1 :

['git_futils_mmap_free']

115 118 git_midx_close call site: 00162 /src/libgit2/src/libgit2/midx.c:489
111 111 1 :

['git_error_set_oom']

111 111 git_str_try_grow call site: 00004 /src/libgit2/src/util/str.c:75
18 128 11 :

['getsid', 'getpgid', 'getgid', 'gettimeofday', 'getppid', '__errno_location', 'getpid', 'git_time_monotonic.4720', 'getloadavg', 'git_error_set', 'getuid']

18 128 getseed call site: 00000 /src/libgit2/src/util/rand.c:93
7 7 1 :

['git_vector_free_deep']

7 7 git_merge_driver_global_init call site: 00000 /src/libgit2/src/libgit2/merge_driver.c:220
4 115 3 :

['strerror', 'git_str_puts', '__errno_location']

4 226 git_error_vset call site: 00024 /src/libgit2/src/libgit2/errors.c:114
4 4 1 :

['git_oid_raw_cmp']

4 334 midx_parse_oid_lookup call site: 00148 /src/libgit2/src/libgit2/midx.c:121
4 4 1 :

['git_filter_free']

4 4 git_filter_global_init call site: 00000 /src/libgit2/src/libgit2/filter.c:215

Runtime coverage analysis

Covered functions
121
Functions that are reachable but not covered
50
Reachable functions
102
Percentage of reachable functions covered
50.98%
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
build/../fuzzers/midx_fuzzer.c 1
src/util/str.c 9
src/libgit2/errors.c 4
src/libgit2/threadstate.c 1
src/util/thread.c 2
src/util/str.h 2
src/util/hash.c 5
src/util/hash/collisiondetect.c 5
src/util/hash/sha1dc/sha1.c 9
src/util/hash/builtin.c 5
src/util/hash/rfc6234/sha224-256.c 8
src/util/hash/sha1dc/ubc_check.c 1
build/../src/util/str.h 1
src/libgit2/midx.c 8
src/libgit2/oid.h 2
src/util/vector.c 5
src/util/util.c 2
src/util/vector.h 1
src/util/futils.c 1
src/util/unix/map.c 1

Fuzzer: objects_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 40 34.4%
gold [1:9] 7 6.03%
yellow [10:29] 7 6.03%
greenyellow [30:49] 1 0.86%
lawngreen 50+ 61 52.5%
All colors 116 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
160 160 5 :

['compute_minrun', 'check_invariant', 'collapse', 'count_run', 'merge']

160 220 git__tsort_r call site: 00000 /src/libgit2/src/util/tsort.c:346
121 121 1 :

['get_passwd_home']

236 350 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
121 121 1 :

['get_passwd_home']

236 236 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356
111 111 1 :

['git_error_set_oom']

111 111 git_str_try_grow call site: 00010 /src/libgit2/src/util/str.c:75
18 128 11 :

['getsid', 'getpgid', 'getgid', 'gettimeofday', 'getppid', '__errno_location', 'getpid', 'git_time_monotonic.4720', 'getloadavg', 'git_error_set', 'getuid']

18 128 getseed call site: 00000 /src/libgit2/src/util/rand.c:93
7 7 1 :

['git_vector_free_deep']

7 7 git_merge_driver_global_init call site: 00000 /src/libgit2/src/libgit2/merge_driver.c:220
4 115 3 :

['strerror', 'git_str_puts', '__errno_location']

4 226 git_error_vset call site: 00026 /src/libgit2/src/libgit2/errors.c:114
4 4 1 :

['git_filter_free']

4 4 git_filter_global_init call site: 00000 /src/libgit2/src/libgit2/filter.c:215
2 2 1 :

['memchr']

2 2 git__memmem call site: 00000 /src/libgit2/src/util/util.c:345
0 121 1 :

['git_str_put']

4 347 git_error_vset call site: 00017 /src/libgit2/src/libgit2/errors.c:110
0 110 1 :

['git_error_set']

0 110 git_odb__format_object_header call site: 00055 /src/libgit2/src/libgit2/odb.c:99
0 110 1 :

['git_error_set']

0 110 git_odb__hashobj call site: 00051 /src/libgit2/src/libgit2/odb.c:129

Runtime coverage analysis

Covered functions
161
Functions that are reachable but not covered
24
Reachable functions
72
Percentage of reachable functions covered
66.67%
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
build/../fuzzers/objects_fuzzer.c 1
src/libgit2/object.c 6
src/libgit2/errors.c 4
src/libgit2/threadstate.c 1
src/util/thread.c 2
src/util/str.c 7
src/util/str.h 1
src/libgit2/odb.c 4
src/libgit2/oid.h 1
src/util/hash.c 5
src/util/hash/collisiondetect.c 5
src/util/hash/sha1dc/sha1.c 9
src/util/hash/builtin.c 5
src/util/hash/rfc6234/sha224-256.c 8
src/util/hash/sha1dc/ubc_check.c 1
src/libgit2/cache.h 1
src/util/thread.h 2
src/libgit2/cache.c 1

Fuzzer: download_refs_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 3905 71.0%
gold [1:9] 373 6.78%
yellow [10:29] 114 2.07%
greenyellow [30:49] 16 0.29%
lawngreen 50+ 1090 19.8%
All colors 5498 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
10572 10572 1 :

['filesystem_iterator_entry_hash']

10572 10572 filesystem_iterator_entry_init call site: 04336 /src/libgit2/src/libgit2/iterator.c:1328
7494 7494 2 :

['git_tree_entry_free', 'git_tree_entry_bypath']

7715 7715 filesystem_iterator_is_submodule call site: 04327 /src/libgit2/src/libgit2/iterator.c:1107
5509 5509 1 :

['git_repository_index__weakptr']

5509 10556 iterator_init_common call site: 03495 /src/libgit2/src/libgit2/iterator.c:128
5487 5487 2 :

['ensure_remote_doesnot_exist', 'ensure_remote_name_is_valid']

11072 26866 git_remote_create_with_opts call site: 00042 /src/libgit2/src/libgit2/remote.c:227
4795 4795 1 :

['dotgit_flags']

4795 4861 git_path_str_is_valid call site: 03643 /src/libgit2/src/libgit2/path.c:320
3602 6255 26 :

['resolve_deltas', 'git_filebuf_hash', 'update_header_and_rehash', 'git_str_sets', 'git_str_cstr.8773', 'git_str_puts', 'git_mwindow_free_all', 'p_rename', 'p_fsync.8774', 'git_hash_final', 'git_filebuf_write', 'index_path', 'git_str_shorten', 'close', 'git_oidmap_size', 'git_vector_sort', 'git_hash_fmt', 'git_filebuf_open', 'git_str_oom.8775', 'git_oid_size.8742', 'git_filebuf_commit_at', 'htonl', 'git_filebuf_cleanup', 'git_str_dispose', 'write_at', 'git_futils_fsync_parent']

3602 6695 git_indexer_commit call site: 02911 /src/libgit2/src/libgit2/indexer.c:1274
2572 2572 1 :

['git_config_foreach_match']

2572 2572 check_extensions call site: 00000 /src/libgit2/src/libgit2/repository.c:1857
1656 1656 2 :

['git_repository__shallow_roots_write', 'git_oidarray_dispose']

1656 1656 git_fetch_download_pack call site: 05476 /src/libgit2/src/libgit2/fetch.c:217
1030 6055 7 :

['git_error_clear', 'git_futils_cp_r', 'git_config_open_default', 'git_sysdir_find_template_dir', 'git_config_free', 'git_str_dispose', 'git_config__get_path']

1034 6607 repo_init_structure call site: 00000 /src/libgit2/src/libgit2/repository.c:2496
677 677 1 :

['check_object_connectivity']

788 1792 store_object call site: 02831 /src/libgit2/src/libgit2/indexer.c:507
578 578 4 :

['git_vector_resize_to', 'git_vector_length.1298', 'remove_multi_pack_index', 'process_multi_pack_index_pack']

578 578 refresh_multi_pack_index call site: 02623 /src/libgit2/src/libgit2/odb_pack.c:486
490 490 1 :

['git_repository_free']

490 490 git_repository_open_ext call site: 00000 /src/libgit2/src/libgit2/repository.c:1129

Runtime coverage analysis

Covered functions
762
Functions that are reachable but not covered
880
Reachable functions
1530
Percentage of reachable functions covered
42.48%
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
build/../fuzzers/download_refs_fuzzer.c 12
src/libgit2/remote.c 42
src/libgit2/errors.c 9
src/libgit2/threadstate.c 1
src/util/thread.c 2
src/util/str.c 26
src/util/str.h 7
src/libgit2/common.h 1
src/libgit2/refspec.c 6
src/libgit2/refs.c 30
src/libgit2/repository.c 28
src/util/util.c 17
src/libgit2/config.c 45
src/util/util.h 8
src/libgit2/sysdir.c 9
src/util/fs_path.c 34
src/util/vector.c 21
src/util/thread.h 9
src/libgit2/config_file.c 33
src/libgit2/config_entries.c 12
src/util/strmap.c 15
src/util/futils.c 29
src/util/integer.h 5
src/util/posix.c 4
src/util/hash.c 8
src/util/hash/collisiondetect.c 5
src/util/hash/sha1dc/sha1.c 9
src/util/hash/builtin.c 5
src/util/hash/rfc6234/sha224-256.c 8
src/util/hash/sha1dc/ubc_check.c 1
src/libgit2/parse.c 8
src/libgit2/config_parse.c 14
src/util/khash.h 1
src/util/fs_path.h 2
src/util/array.h 2
src/util/filebuf.c 15
deps/zlib/deflate.c 16
deps/zlib/zutil.c 2
deps/zlib/adler32.c 2
deps/zlib/trees.c 20
src/util/rand.c 2
src/util/pool.c 9
src/util/unix/posix.h 1
src/util/regexp.c 3
deps/pcre/pcre_compile.c 31
deps/pcre/pcre_newline.c 2
src/libgit2/config_snapshot.c 13
src/util/vector.h 4
src/util/tsort.c 11
deps/pcre/pcre_exec.c 4
src/libgit2/errors.h 1
src/libgit2/libgit2.c 1
src/util/runtime.c 3
src/libgit2/push.c 3
src/libgit2/config_cache.c 3
src/libgit2/transports/smart.c 16
src/libgit2/strarray.c 2
src/libgit2/proxy.c 3
src/libgit2/transports/smart_protocol.c 22
src/libgit2/transports/smart_pkt.c 23
src/libgit2/oid.h 14
src/libgit2/oid.c 13
src/util/wildmatch.c 2
src/libgit2/revwalk.c 19
src/libgit2/oidmap.c 15
src/util/pqueue.c 5
src/libgit2/commit_list.c 9
src/libgit2/odb.c 41
src/libgit2/commit_graph.c 17
src/util/unix/map.c 2
src/libgit2/pack.c 34
src/libgit2/cache.c 13
src/libgit2/cache.h 2
src/libgit2/object.c 18
src/libgit2/commit.c 5
src/libgit2/signature.c 6
src/libgit2/grafts.c 8
src/libgit2/odb_loose.c 38
src/util/zstream.c 13
deps/zlib/inflate.c 10
deps/zlib/inftrees.c 1
deps/zlib/inffast.c 1
src/libgit2/odb_pack.c 25
src/libgit2/midx.c 24
src/libgit2/mwindow.c 12
src/libgit2/offmap.c 11
src/libgit2/delta.c 8
src/libgit2/indexer.c 31
deps/zlib/crc32.c 5
src/util/hash.h 1
src/util/filebuf.h 1
src/util/unix/realpath.c 1
src/libgit2/refdb.c 15
src/libgit2/refdb_fs.c 65
src/util/sortedcache.c 21
src/libgit2/iterator.c 18
src/libgit2/index.c 49
src/libgit2/idxmap.c 19
src/libgit2/tree-cache.c 5
src/util/varint.c 1
src/libgit2/path.h 2
src/libgit2/path.c 12
src/util/utf8.c 2
src/libgit2/object_api.c 9
src/libgit2/ignore.c 11
src/libgit2/attrcache.c 14
src/libgit2/repository.h 1
src/libgit2/attr.c 13
src/libgit2/attr_file.c 23
src/libgit2/tag.c 4
src/libgit2/blob.c 2
src/libgit2/tree.c 9
src/libgit2/tree.h 1
src/libgit2/filter.c 21
src/libgit2/iterator.h 1
src/libgit2/reflog.c 2
src/libgit2/oidarray.c 3
src/libgit2/pack-objects.c 20
src/libgit2/delta.h 1
src/libgit2/buf.c 1
src/libgit2/transport.c 3
src/libgit2/remote.h 1
src/libgit2/fetch.c 6

Fuzzer: config_file_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 209 50.7%
gold [1:9] 9 2.18%
yellow [10:29] 5 1.21%
greenyellow [30:49] 2 0.48%
lawngreen 50+ 187 45.3%
All colors 412 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
1210 1210 1 :

['git_regexp_compile']

1210 1210 git_config_iterator_glob_new call site: 00231 /src/libgit2/src/libgit2/config.c:481
160 160 5 :

['compute_minrun', 'check_invariant', 'collapse', 'count_run', 'merge']

160 220 git__tsort_r call site: 00206 /src/libgit2/src/util/tsort.c:346
128 128 1 :

['try_remove_existing_backend']

128 452 git_config__add_internal call site: 00195 /src/libgit2/src/libgit2/config.c:262
121 121 1 :

['get_passwd_home']

236 350 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
121 121 1 :

['get_passwd_home']

236 236 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356
111 111 1 :

['git_error_set_oom']

111 111 git_str_try_grow call site: 00011 /src/libgit2/src/util/str.c:75
18 128 11 :

['getsid', 'getpgid', 'getgid', 'gettimeofday', 'getppid', '__errno_location', 'getpid', 'git_time_monotonic.4720', 'getloadavg', 'git_error_set', 'getuid']

18 128 getseed call site: 00000 /src/libgit2/src/util/rand.c:93
7 7 1 :

['git_vector_free_deep']

7 7 git_merge_driver_global_init call site: 00000 /src/libgit2/src/libgit2/merge_driver.c:220
4 115 3 :

['strerror', 'git_str_puts', '__errno_location']

4 226 git_error_vset call site: 00027 /src/libgit2/src/libgit2/errors.c:114
4 4 1 :

['git_filter_free']

4 4 git_filter_global_init call site: 00000 /src/libgit2/src/libgit2/filter.c:215
0 121 1 :

['git_str_put']

4 347 git_error_vset call site: 00018 /src/libgit2/src/libgit2/errors.c:110
0 111 1 :

['set_parse_error']

0 111 parse_section_header call site: 00106 /src/libgit2/src/libgit2/config_parse.c:210

Runtime coverage analysis

Covered functions
160
Functions that are reachable but not covered
86
Reachable functions
190
Percentage of reachable functions covered
54.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
build/../fuzzers/config_file_fuzzer.c 2
src/libgit2/config.c 20
src/util/vector.c 7
src/libgit2/errors.c 6
src/libgit2/threadstate.c 1
src/util/thread.c 2
src/util/str.c 14
src/util/str.h 1
src/util/thread.h 3
src/libgit2/config_mem.c 13
src/libgit2/config_entries.c 11
src/util/strmap.c 10
src/libgit2/config_parse.c 14
src/libgit2/parse.c 6
src/util/util.c 2
src/util/util.h 2
src/util/khash.h 1
src/libgit2/common.h 1
src/util/vector.h 1
src/util/tsort.c 11
src/util/regexp.c 3
deps/pcre/pcre_compile.c 31
deps/pcre/pcre_newline.c 2
deps/pcre/pcre_exec.c 4
src/libgit2/errors.h 1
src/libgit2/libgit2.c 1
src/util/runtime.c 3
build/..config_backend.h 1

Fuzzer: commit_graph_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 93 51.6%
gold [1:9] 12 6.66%
yellow [10:29] 6 3.33%
greenyellow [30:49] 1 0.55%
lawngreen 50+ 68 37.7%
All colors 180 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
233 233 2 :

['commit_graph_parse_commit_data', 'commit_graph_parse_extra_edge_list']

233 233 git_commit_graph_file_parse call site: 00119 /src/libgit2/src/libgit2/commit_graph.c:292
222 332 2 :

['git_str_grow', 'git_error_set_oom']

222 332 git_str_vprintf call site: 00020 /src/libgit2/src/util/str.c:529
160 160 5 :

['compute_minrun', 'check_invariant', 'collapse', 'count_run', 'merge']

160 220 git__tsort_r call site: 00000 /src/libgit2/src/util/tsort.c:346
121 121 1 :

['get_passwd_home']

236 350 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
121 121 1 :

['get_passwd_home']

236 236 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356
115 115 1 :

['git_futils_mmap_free']

115 115 git_commit_graph_file_close call site: 00174 /src/libgit2/src/libgit2/commit_graph.c:655
111 111 1 :

['git_error_set_oom']

111 111 git_str_try_grow call site: 00004 /src/libgit2/src/util/str.c:75
18 128 11 :

['getsid', 'getpgid', 'getgid', 'gettimeofday', 'getppid', '__errno_location', 'getpid', 'git_time_monotonic.4720', 'getloadavg', 'git_error_set', 'getuid']

18 128 getseed call site: 00000 /src/libgit2/src/util/rand.c:93
7 7 1 :

['git_vector_free_deep']

7 7 git_merge_driver_global_init call site: 00000 /src/libgit2/src/libgit2/merge_driver.c:220
4 115 3 :

['strerror', 'git_str_puts', '__errno_location']

4 226 git_error_vset call site: 00024 /src/libgit2/src/libgit2/errors.c:114
4 4 1 :

['git_filter_free']

4 4 git_filter_global_init call site: 00000 /src/libgit2/src/libgit2/filter.c:215
0 121 1 :

['git_str_put']

4 347 git_error_vset call site: 00014 /src/libgit2/src/libgit2/errors.c:110

Runtime coverage analysis

Covered functions
117
Functions that are reachable but not covered
45
Reachable functions
90
Percentage of reachable functions covered
50.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.
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
build/../fuzzers/commit_graph_fuzzer.c 1
src/util/str.c 9
src/libgit2/errors.c 4
src/libgit2/threadstate.c 1
src/util/thread.c 2
src/util/str.h 2
src/util/hash.c 5
src/util/hash/collisiondetect.c 5
src/util/hash/sha1dc/sha1.c 9
src/util/hash/builtin.c 5
src/util/hash/rfc6234/sha224-256.c 8
src/util/hash/sha1dc/ubc_check.c 1
build/../src/util/str.h 2
src/libgit2/commit_graph.c 9
src/libgit2/oid.h 6
src/libgit2/pack.c 1
src/libgit2/odb.c 2
src/libgit2/oid.c 4
src/util/futils.c 1
src/util/unix/map.c 1

Fuzzer: patch_parse_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 17 8.37%
gold [1:9] 17 8.37%
yellow [10:29] 14 6.89%
greenyellow [30:49] 3 1.47%
lawngreen 50+ 152 74.8%
All colors 203 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
222 332 2 :

['git_str_grow', 'git_error_set_oom']

222 332 git_str_vprintf call site: 00028 /src/libgit2/src/util/str.c:529
160 160 5 :

['compute_minrun', 'check_invariant', 'collapse', 'count_run', 'merge']

160 220 git__tsort_r call site: 00000 /src/libgit2/src/util/tsort.c:346
121 121 1 :

['get_passwd_home']

121 350 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
121 121 1 :

['get_passwd_home']

121 236 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356
111 111 1 :

['git_error_set_oom']

111 111 git_str_try_grow call site: 00016 /src/libgit2/src/util/str.c:75
18 128 11 :

['getsid', 'getpgid', 'getgid', 'gettimeofday', 'getppid', '__errno_location', 'getpid', 'git_time_monotonic.4720', 'getloadavg', 'git_error_set', 'getuid']

18 128 getseed call site: 00000 /src/libgit2/src/util/rand.c:93
7 7 1 :

['git_vector_free_deep']

7 7 git_merge_driver_global_init call site: 00000 /src/libgit2/src/libgit2/merge_driver.c:220
4 115 3 :

['strerror', 'git_str_puts', '__errno_location']

4 226 git_error_vset call site: 00032 /src/libgit2/src/libgit2/errors.c:114
4 4 1 :

['git_filter_free']

4 4 git_filter_global_init call site: 00000 /src/libgit2/src/libgit2/filter.c:215
0 121 1 :

['git_str_put']

4 347 git_error_vset call site: 00023 /src/libgit2/src/libgit2/errors.c:110
0 110 1 :

['git_parse_err']

0 224 parse_header_git_newpath call site: 00000 /src/libgit2/src/libgit2/patch_parse.c:134
0 110 1 :

['git_parse_err']

0 110 parse_hunk_body call site: 00174 /src/libgit2/src/libgit2/patch_parse.c:689

Runtime coverage analysis

Covered functions
155
Functions that are reachable but not covered
10
Reachable functions
75
Percentage of reachable functions covered
86.67%
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
build/../fuzzers/patch_parse_fuzzer.c 1
src/libgit2/patch_parse.c 22
src/libgit2/parse.c 9
src/util/util.c 3
src/util/thread.h 2
src/libgit2/errors.c 6
src/libgit2/threadstate.c 1
src/util/thread.c 2
src/util/str.c 10
src/util/str.h 1
src/libgit2/parse.h 1
src/util/util.h 2
src/util/integer.h 1
src/util/array.h 1
src/libgit2/oid.h 2
src/libgit2/patch.c 2

Fuzzer: packfile_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 776 62.2%
gold [1:9] 104 8.34%
yellow [10:29] 13 1.04%
greenyellow [30:49] 1 0.08%
lawngreen 50+ 353 28.3%
All colors 1247 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
677 677 1 :

['check_object_connectivity']

788 1792 store_object call site: 00621 /src/libgit2/src/libgit2/indexer.c:507
447 771 3 :

['git_hash_final', 'update_header_and_rehash', 'write_at']

647 4501 git_indexer_commit call site: 00934 /src/libgit2/src/libgit2/indexer.c:1290
409 409 1 :

['git_futils_creat_locked_withpath']

425 1191 lock_file call site: 01040 /src/libgit2/src/util/filebuf.c:54
405 405 2 :

['git_odb_stream_free', 'git_odb_open_wstream']

405 405 git_odb_write call site: 00163 /src/libgit2/src/libgit2/odb.c:1653
362 925 9 :

['readlink', 'git_str_sets', 'git_str_swap', 'git_fs_path_apply_relative', 'git_fs_path_dirname_r', 'git_fs_path_root', '__errno_location', 'git_error_set', 'lstat']

362 1489 resolve_symlink call site: 00998 /src/libgit2/src/util/filebuf.c:211
338 338 1 :

['deflate']

338 453 git_zstream_get_output_chunk call site: 00523 /src/libgit2/src/util/zstream.c:122
174 174 1 :

['git_commit_graph_refresh']

176 176 git_odb_refresh call site: 00130 /src/libgit2/src/libgit2/odb.c:1948
160 160 5 :

['compute_minrun', 'check_invariant', 'collapse', 'count_run', 'merge']

160 220 git__tsort_r call site: 00950 /src/libgit2/src/util/tsort.c:346
134 258 2 :

['git_mwindow_close_lru_window_locked', 'git_futils_mmap_ro']

134 258 new_window_locked call site: 00412 /src/libgit2/src/libgit2/mwindow.c:367
128 260 2 :

['git_mwindow_find_lru_file_locked', 'git_mwindow_free_all_locked']

136 513 git_mwindow_file_register call site: 00269 /src/libgit2/src/libgit2/mwindow.c:473
121 121 1 :

['get_passwd_home']

236 350 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
121 121 1 :

['get_passwd_home']

236 236 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356

Runtime coverage analysis

Covered functions
272
Functions that are reachable but not covered
252
Reachable functions
458
Percentage of reachable functions covered
44.98%
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
build/../fuzzers/packfile_fuzzer.c 1
src/libgit2/odb_mempack.c 1
src/libgit2/oidmap.c 16
src/libgit2/odb.c 33
src/libgit2/errors.c 7
src/libgit2/threadstate.c 1
src/util/thread.c 2
src/util/str.c 19
src/util/str.h 5
src/libgit2/object.c 6
src/libgit2/oid.h 9
src/util/hash.c 7
src/util/hash/collisiondetect.c 5
src/util/hash/sha1dc/sha1.c 9
src/util/hash/builtin.c 5
src/util/hash/rfc6234/sha224-256.c 8
src/util/hash/sha1dc/ubc_check.c 1
src/libgit2/oid.c 9
src/util/vector.h 2
src/libgit2/commit_graph.c 4
src/util/futils.c 14
src/util/posix.c 4
src/util/fs_path.c 11
src/util/integer.h 2
src/util/unix/map.c 2
src/libgit2/indexer.c 32
src/util/rand.c 2
src/libgit2/pack.c 28
src/util/util.c 1
src/libgit2/offmap.c 11
src/libgit2/mwindow.c 10
src/util/vector.c 10
src/libgit2/errors.h 1
src/libgit2/libgit2.c 1
src/util/runtime.c 3
src/util/thread.h 6
src/util/zstream.c 11
deps/zlib/inflate.c 10
deps/zlib/zutil.c 2
deps/zlib/deflate.c 16
deps/zlib/adler32.c 2
deps/zlib/trees.c 20
deps/zlib/inftrees.c 1
deps/zlib/inffast.c 1
src/libgit2/cache.h 2
src/libgit2/cache.c 9
deps/zlib/crc32.c 5
src/util/hash.h 1
src/util/filebuf.h 1
src/util/array.h 1
src/libgit2/delta.c 2
src/util/tsort.c 11
src/util/filebuf.c 14
src/util/util.h 1
src/util/fs_path.h 1
src/util/strmap.c 5
src/util/khash.h 1
src/util/pool.c 2
src/util/unix/posix.h 1
build/../src/util/str.h 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
git_submodule_update /src/libgit2/src/libgit2/submodule.c 3 ['struct.git_submodule *', 'int ', 'struct.git_submodule_update_options *'] 23 0 404 70 29 2091 0 16736 5144
git_smart_subtransport_http /src/libgit2/src/libgit2/transports/http.c 3 ['struct.git_smart_subtransport **', 'struct.git_transport *', 'char *'] 12 0 83 14 4 201 0 1413 1036
git_merge /src/libgit2/src/libgit2/merge.c 5 ['struct.git_repository *', 'struct.git_annotated_commit **', 'size_t ', 'struct.git_merge_options *', 'struct.git_checkout_options *'] 47 0 279 50 19 1956 0 15831 1010
git_transport_local /src/libgit2/src/libgit2/transports/local.c 3 ['struct.git_transport.2804 **', 'struct.git_remote.2797 *', 'char *'] 43 0 132 12 4 1632 0 13110 840
git_email_create_from_commit /src/libgit2/src/libgit2/email.c 3 ['struct.git_str *', 'struct.git_commit *', 'struct.git_email_create_options.1778 *'] 32 0 180 25 9 1733 0 14141 650
git_index_add_all /src/libgit2/src/libgit2/index.c 5 ['struct.git_index *', 'struct.git_strarray *', 'int ', 'func_type *', 'char *'] 32 0 145 23 9 1684 0 13705 211
crlf_stream /src/libgit2/src/libgit2/crlf.c 5 ['struct.git_writestream **', 'struct.git_filter *', 'char **', 'struct.git_filter_source *', 'struct.git_writestream *'] 16 0 32 3 2 956 2 8334 170

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

Functions statically reachable by fuzzers
72.0%
2680 / 3741
Cyclomatic complexity statically reachable by fuzzers
79.0%
21872 / 27703

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

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
getseed 34 11 32.35% []
pcre_compile2 405 189 46.66% ['download_refs_fuzzer', 'config_file_fuzzer']
compile_regex 187 80 42.78% ['download_refs_fuzzer', 'config_file_fuzzer']
compile_branch 1629 175 10.74% ['download_refs_fuzzer', 'config_file_fuzzer']
caseCHAR_5caseCHAR_6caseCHAR_7caseCHAR_8caseCHAR_9 425 49 11.52%
check_escape 121 11 9.090% ['download_refs_fuzzer', 'config_file_fuzzer']
caseCHAR_6caseCHAR_7caseCHAR_8caseCHAR_9 162 7 4.320%
auto_possessify 117 42 35.89% ['download_refs_fuzzer', 'config_file_fuzzer']
get_chr_property_list 108 48 44.44% ['download_refs_fuzzer', 'config_file_fuzzer']
compare_opcodes 269 42 15.61% ['download_refs_fuzzer', 'config_file_fuzzer']
is_anchored 44 17 38.63% ['download_refs_fuzzer', 'config_file_fuzzer']
could_be_empty_branch 191 49 25.65% ['download_refs_fuzzer', 'config_file_fuzzer']
pcre_exec 414 184 44.44% ['download_refs_fuzzer', 'config_file_fuzzer']
filesystem_iterator_examine_path 36 12 33.33% ['download_refs_fuzzer']
git_libgit2_opts 222 12 5.405% []
git_midx_open 40 10 25.0% ['download_refs_fuzzer']
git_mwindow_file_register 41 18 43.90% ['download_refs_fuzzer', 'packfile_fuzzer']
git_odb__add_default_backends 52 28 53.84% ['download_refs_fuzzer']
load_alternates 34 12 35.29% ['download_refs_fuzzer']
refresh_multi_pack_index 35 13 37.14% ['download_refs_fuzzer']
git_packfile_alloc 53 27 50.94% ['download_refs_fuzzer', 'packfile_fuzzer']
packed_reload 71 15 21.12% ['download_refs_fuzzer']
git_remote_create_with_opts 83 41 49.39% ['download_refs_fuzzer']
find_repo 47 16 34.04% []
load_workdir 65 9 13.84% []
repo_init_config 56 30 53.57% []
repo_init_structure 66 26 39.39% []
prepare_walk 48 8 16.66% ['download_refs_fuzzer']
git_smart__negotiate_fetch 141 41 29.07% ['download_refs_fuzzer']
git_filebuf_printf 41 17 41.46% ['download_refs_fuzzer']
resolve_symlink 57 22 38.59% ['download_refs_fuzzer', 'packfile_fuzzer']
lock_file 44 11 25.0% ['download_refs_fuzzer', 'packfile_fuzzer']
git_fs_path_dirname_r 47 25 53.19% ['download_refs_fuzzer', 'packfile_fuzzer']
git_fs_path_direach 34 17 50.0% ['download_refs_fuzzer']
git_fs_path_owner_is 34 11 32.35% ['download_refs_fuzzer']
git_futils_readbuffer_updated 48 23 47.91% ['download_refs_fuzzer']
git_futils_mkdir 53 28 52.83% ['download_refs_fuzzer', 'packfile_fuzzer']
mkdir_validate_dir 33 8 24.24% ['download_refs_fuzzer', 'packfile_fuzzer']
git_sortedcache_lockandload 33 9 27.27% ['download_refs_fuzzer']
binsearch 35 9 25.71% ['download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer']
dowild 181 50 27.62% ['download_refs_fuzzer']
resolve_deltas 41 8 19.51% ['download_refs_fuzzer', 'packfile_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/libgit2/src/util/zstream.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/merge.h [] []
/src/libgit2/src/libgit2/streams/socket.c [] []
/src/libgit2/src/libgit2/graph.c [] []
/src/libgit2/src/libgit2/attr_file.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/odb_pack.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/cache.c ['objects_fuzzer', 'download_refs_fuzzer', 'packfile_fuzzer'] ['objects_fuzzer', 'download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/util/pool.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/config_cache.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/allocators/stdalloc.c [] []
/src/libgit2/src/libgit2/path.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/object.h [] []
/src/libgit2/src/libgit2/streams/tls.c [] []
/src/libgit2/src/util/date.c [] []
/src/libgit2/src/libgit2/config.c ['download_refs_fuzzer', 'config_file_fuzzer'] ['download_refs_fuzzer', 'config_file_fuzzer']
/src/libgit2/src/libgit2/mwindow.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/transports/smart_protocol.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/delta.c ['download_refs_fuzzer', 'packfile_fuzzer'] []
/src/libgit2/deps/zlib/adler32.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/patch_parse.c ['patch_parse_fuzzer'] ['patch_parse_fuzzer']
/src/libgit2/src/libgit2/strarray.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/index.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/trace.c [] []
/src/libgit2/build/../fuzzers/patch_parse_fuzzer.c ['patch_parse_fuzzer'] []
/src/libgit2/src/libgit2/cache.h ['objects_fuzzer', 'download_refs_fuzzer', 'packfile_fuzzer'] ['objects_fuzzer']
/src/libgit2/src/libgit2/attr.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/crlf.c [] []
/src/libgit2/deps/xdiff/xmerge.c [] []
/src/libgit2/src/util/utf8.c ['download_refs_fuzzer'] []
/src/libgit2/src/util/thread.c ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/refdb.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/transports/smart.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/unix/realpath.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/signature.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/transports/http.h [] []
/src/libgit2/src/libgit2/iterator.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/commit.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/odb_mempack.c ['packfile_fuzzer'] ['packfile_fuzzer']
/src/libgit2/src/libgit2/merge_driver.c [] []
/src/libgit2/src/libgit2/midx.c ['midx_fuzzer', 'download_refs_fuzzer'] ['midx_fuzzer', 'download_refs_fuzzer']
/src/libgit2/src/libgit2/config_backend.h [] []
/src/libgit2/src/libgit2/diff_file.c [] []
/src/libgit2/src/util/alloc.c [] []
/src/libgit2/src/libgit2/worktree.c [] []
/src/libgit2/src/util/fs_path.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/diff_xdiff.c [] []
/src/libgit2/build/../fuzzers/commit_graph_fuzzer.c ['commit_graph_fuzzer'] []
/src/libgit2/src/util/rand.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/merge.c [] []
/src/libgit2/src/libgit2/trace.h [] []
/src/libgit2/src/libgit2/oidmap.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/transports/smart_pkt.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/str.h ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/ident.c [] []
/src/libgit2/src/util/tsort.c ['download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/util/regexp.c ['download_refs_fuzzer', 'config_file_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/deps/zlib/inffast.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/util/vector.c ['midx_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/buf.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/tree-cache.c ['download_refs_fuzzer'] []
/src/libgit2/src/util/wildmatch.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/deps/xdiff/xemit.c [] []
/src/libgit2/src/libgit2/path.h ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/build/../fuzzers/midx_fuzzer.c ['midx_fuzzer'] []
/src/libgit2/src/util/unix/pthread.h [] []
/src/libgit2/deps/zlib/zutil.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/deps/xdiff/git-xdiff.h [] []
/src/libgit2/src/util/vector.h ['midx_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/pack.c ['download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/deps/http-parser/http_parser.c [] []
/src/libgit2/src/libgit2/patch_generate.c [] []
/src/libgit2/build/../fuzzers/objects_fuzzer.c ['objects_fuzzer'] []
/src/libgit2/src/libgit2/sysdir.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/delta.h ['download_refs_fuzzer'] []
/src/libgit2/src/util/hash/sha1dc/sha1.c ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/streams/openssl.c [] []
/src/libgit2/src/libgit2/filter.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/hash/rfc6234/sha224-256.c ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/util.h ['download_refs_fuzzer', 'config_file_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'config_file_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/clone.c [] []
/src/libgit2/src/libgit2/pack-objects.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/annotated_commit.c [] []
/src/libgit2/src/libgit2/idxmap.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/attrcache.c ['download_refs_fuzzer'] []
/src/libgit2/src/util/sortedcache.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/checkout.c [] []
/src/libgit2/src/libgit2/transaction.c [] []
/src/libgit2/src/libgit2/hashsig.c [] []
/src/libgit2/src/libgit2/merge_file.c [] []
/src/libgit2/src/libgit2/proxy.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/bitvec.h [] []
/src/libgit2/src/libgit2/indexer.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/transports/auth.c [] []
/src/libgit2/src/util/net.c [] []
/src/libgit2/src/libgit2/oidarray.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/transports/git.c [] []
/src/libgit2/src/util/filebuf.h ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/refspec.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/diff.c [] []
/src/libgit2/src/libgit2/transports/local.c [] []
/src/libgit2/src/libgit2/odb.c ['objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['objects_fuzzer', 'download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/mailmap.c [] []
/src/libgit2/src/libgit2/repository.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/threadstate.c ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer']
/src/libgit2/build/../fuzzers/download_refs_fuzzer.c ['download_refs_fuzzer'] []
/src/libgit2/deps/pcre/pcre_exec.c ['download_refs_fuzzer', 'config_file_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/pqueue.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/deps/zlib/inflate.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/util/integer.h ['download_refs_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'patch_parse_fuzzer']
/src/libgit2/src/libgit2/remote.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/transport.c ['download_refs_fuzzer'] []
/src/libgit2/deps/xdiff/xdiffi.c [] []
/src/libgit2/src/util/thread.h ['objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer'] ['objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/diff_tform.c [] []
/src/libgit2/deps/pcre/pcre_compile.c ['download_refs_fuzzer', 'config_file_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/filebuf.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/deps/zlib/deflate.c ['download_refs_fuzzer', 'packfile_fuzzer'] []
/src/libgit2/src/libgit2/parse.c ['download_refs_fuzzer', 'config_file_fuzzer', 'patch_parse_fuzzer'] ['download_refs_fuzzer', 'config_file_fuzzer', 'patch_parse_fuzzer']
/src/libgit2/src/libgit2/branch.c [] []
/src/libgit2/src/libgit2/refs.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/unix/posix.h ['download_refs_fuzzer', 'packfile_fuzzer'] []
/src/libgit2/src/libgit2/errors.h ['download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer'] []
/src/libgit2/src/libgit2/repository.h ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/stream.h [] []
/src/libgit2/src/libgit2/remote.h ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/transports/httpclient.c [] []
/src/libgit2/src/libgit2/commit_graph.c ['download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'commit_graph_fuzzer']
/src/libgit2/src/libgit2/pathspec.c [] []
/src/libgit2/src/libgit2/iterator.h ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/revwalk.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/deps/xdiff/xutils.c [] []
/src/libgit2/deps/zlib/crc32.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/libgit2.c ['download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/index.h [] []
/src/libgit2/src/libgit2/parse.h ['patch_parse_fuzzer'] ['patch_parse_fuzzer']
/src/libgit2/src/libgit2/config_file.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/unix/map.c ['midx_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/diff_generate.c [] []
/src/libgit2/build/../fuzzers/config_file_fuzzer.c ['config_file_fuzzer'] []
/src/libgit2/src/libgit2/config_entries.c ['download_refs_fuzzer', 'config_file_fuzzer'] ['download_refs_fuzzer', 'config_file_fuzzer']
/src/libgit2/src/libgit2/offmap.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/fetchhead.c [] []
/src/libgit2/deps/xdiff/xhistogram.c [] []
/src/libgit2/src/libgit2/tree.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/oid.c ['download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/util/util.c ['midx_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/config_snapshot.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/varint.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/ignore.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/strmap.c ['download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/refdb_fs.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/deps/pcre/pcre_newline.c ['download_refs_fuzzer', 'config_file_fuzzer'] []
/src/libgit2/src/libgit2/patch.c ['patch_parse_fuzzer'] ['patch_parse_fuzzer']
/src/libgit2/src/libgit2/diff_print.c [] []
/src/libgit2/src/util/array.h ['download_refs_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'patch_parse_fuzzer']
/src/libgit2/src/util/hash/builtin.c ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/util/str.c ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/util/fs_path.h ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/futils.c ['midx_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/util/hash.c ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/commit_list.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/deps/xdiff/xprepare.c [] []
/src/libgit2/src/libgit2/streams/mbedtls.c [] []
/src/libgit2/deps/zlib/inftrees.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/transports/ssh.c [] []
/src/libgit2/src/libgit2/diff_generate.h [] []
/src/libgit2/src/util/hash/collisiondetect.c ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/object.c ['objects_fuzzer', 'download_refs_fuzzer', 'packfile_fuzzer'] ['objects_fuzzer', 'download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/util/runtime.c ['download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/grafts.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/blob.c ['download_refs_fuzzer'] []
/src/libgit2/src/util/hash/sha1dc/ubc_check.c ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/submodule.c [] []
/src/libgit2/src/util/khash.h ['download_refs_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'config_file_fuzzer']
/src/libgit2/src/libgit2/reflog.h [] []
/src/libgit2/src/libgit2/config_parse.c ['download_refs_fuzzer', 'config_file_fuzzer'] ['download_refs_fuzzer', 'config_file_fuzzer']
/src/libgit2/src/libgit2/diff_stats.c [] []
/src/libgit2/src/libgit2/revparse.c [] []
/src/libgit2/src/libgit2/streams/registry.c [] []
/src/libgit2/src/libgit2/push.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/diff_driver.c [] []
/src/libgit2/deps/zlib/trees.c ['download_refs_fuzzer', 'packfile_fuzzer'] []
/src/libgit2/src/libgit2/oid.h ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/object_api.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/odb_loose.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/reflog.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/transports/http.c [] []
/src/libgit2/src/libgit2/transports/credential.c [] []
/src/libgit2/src/util/allocators/failalloc.c [] []
/src/libgit2/src/libgit2/tag.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/fetch.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/config_mem.c ['config_file_fuzzer'] ['config_file_fuzzer']
/src/libgit2/build/../fuzzers/packfile_fuzzer.c ['packfile_fuzzer'] []
/src/libgit2/src/libgit2/common.h ['download_refs_fuzzer', 'config_file_fuzzer'] ['download_refs_fuzzer', 'config_file_fuzzer']
/src/libgit2/deps/xdiff/xpatience.c [] []
/src/libgit2/src/libgit2/tree.h ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/errors.c ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer'] ['midx_fuzzer', 'objects_fuzzer', 'download_refs_fuzzer', 'config_file_fuzzer', 'commit_graph_fuzzer', 'patch_parse_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/util/hash.h ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']
/src/libgit2/src/libgit2/email.c [] []
/src/libgit2/src/util/posix.c ['download_refs_fuzzer', 'packfile_fuzzer'] ['download_refs_fuzzer', 'packfile_fuzzer']

Directories in report

Directory
/src/libgit2/src/libgit2/transports/
/src/libgit2/src/util/unix/
/src/libgit2/deps/zlib/
/src/libgit2/deps/pcre/
/src/libgit2/src/libgit2/
/src/libgit2/deps/xdiff/
/src/libgit2/src/util/hash/sha1dc/
/src/libgit2/src/util/hash/rfc6234/
/src/libgit2/src/libgit2/streams/
/src/libgit2/src/util/
/src/libgit2/src/util/hash/
/src/libgit2/src/util/allocators/
/src/libgit2/deps/http-parser/
/src/libgit2/build/../fuzzers/