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

Fuzzer details

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 237 46.9%
gold [1:9] 8 1.58%
yellow [10:29] 6 1.18%
greenyellow [30:49] 5 0.99%
lawngreen 50+ 249 49.3%
All colors 505 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
1216 1340 3 :

['git__calloc', 'git_regexp_compile', 'git__free']

1216 1340 git_config_iterator_glob_new call site: 00325 /src/libgit2/src/libgit2/config.c:481
750 750 6 :

['compute_minrun', 'collapse', 'check_invariant', 'merge', 'count_run', 'git__free.13529']

750 810 git__tsort_r call site: 00295 /src/libgit2/src/util/tsort.c:346
133 133 1 :

['try_remove_existing_backend']

133 587 git_config__add_internal call site: 00283 /src/libgit2/src/libgit2/config.c:262
126 126 1 :

['get_passwd_home']

248 367 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
126 126 1 :

['get_passwd_home']

248 248 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356
116 116 1 :

['git_error_set_oom']

116 116 git_str_try_grow call site: 00010 /src/libgit2/src/util/str.c:75
18 133 11 :

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

18 133 getseed call site: 00000 /src/libgit2/src/util/rand.c:93
9 9 1 :

['git_vector_free_deep']

9 9 git_merge_driver_global_init call site: 00000 /src/libgit2/src/libgit2/merge_driver.c:220
8 8 1 :

['git_filter_free']

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

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

4 236 git_error_vset call site: 00027 /src/libgit2/src/util/errors.c:205
2 2 1 :

['abort']

2 2 LLVMFuzzerInitialize call site: 00000 /src/libgit2/build/../fuzzers/config_file_fuzzer.c:30
0 184 1 :

['git_config_list_add_string']

0 372 git_config_list_dup_entry call site: 00000 /src/libgit2/src/libgit2/config_list.c:78

Runtime coverage analysis

Covered functions
168
Functions that are reachable but not covered
84
Reachable functions
197
Percentage of reachable functions covered
57.36%
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/alloc.h 3
src/util/errors.c 7
src/util/thread.c 2
src/util/str.c 14
src/util/str.h 1
src/util/vector.c 7
src/util/alloc.c 4
src/util/thread.h 2
src/libgit2/config_mem.c 16
src/libgit2/config_list.c 12
src/util/strmap.c 9
src/libgit2/config_parse.c 14
src/libgit2/parse.c 6
src/util/util.c 2
src/util/khash.h 1
src/util/util.h 2
src/util/strlist.c 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/util/errors.h 1
build/..config_backend.h 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 24 10.0%
gold [1:9] 15 6.25%
yellow [10:29] 15 6.25%
greenyellow [30:49] 1 0.41%
lawngreen 50+ 185 77.0%
All colors 240 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
750 750 6 :

['compute_minrun', 'collapse', 'check_invariant', 'merge', 'count_run', 'git__free.13529']

750 810 git__tsort_r call site: 00000 /src/libgit2/src/util/tsort.c:346
232 347 3 :

['git__free.5706', 'git_error_set_oom', 'git_str_grow']

232 347 git_str_vprintf call site: 00024 /src/libgit2/src/util/str.c:529
126 126 1 :

['get_passwd_home']

126 367 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
126 126 1 :

['get_passwd_home']

126 248 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356
116 116 1 :

['git_error_set_oom']

116 116 git_str_try_grow call site: 00011 /src/libgit2/src/util/str.c:75
18 133 11 :

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

18 133 getseed call site: 00000 /src/libgit2/src/util/rand.c:93
9 9 1 :

['git_vector_free_deep']

9 9 git_merge_driver_global_init call site: 00000 /src/libgit2/src/libgit2/merge_driver.c:220
8 8 1 :

['git_filter_free']

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

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

4 236 git_error_vset call site: 00028 /src/libgit2/src/util/errors.c:205
0 126 1 :

['git_str_put']

4 362 git_error_vset call site: 00018 /src/libgit2/src/util/errors.c:201
0 116 1 :

['git_str_puts']

0 232 set_error call site: 00114 /src/libgit2/src/util/errors.c:156
0 115 1 :

['git_parse_err']

0 234 parse_header_git_newpath call site: 00000 /src/libgit2/src/libgit2/patch_parse.c:134

Runtime coverage analysis

Covered functions
159
Functions that are reachable but not covered
11
Reachable functions
82
Percentage of reachable functions covered
86.59%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
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/util/alloc.c 3
src/util/errors.c 7
src/util/thread.c 2
src/util/str.c 10
src/util/alloc.h 3
src/util/str.h 1
src/libgit2/parse.c 9
src/util/util.c 3
src/util/thread.h 2
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: 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 97 52.4%
gold [1:9] 10 5.40%
yellow [10:29] 6 3.24%
greenyellow [30:49] 1 0.54%
lawngreen 50+ 71 38.3%
All colors 185 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
750 750 6 :

['compute_minrun', 'collapse', 'check_invariant', 'merge', 'count_run', 'git__free.13529']

750 810 git__tsort_r call site: 00000 /src/libgit2/src/util/tsort.c:346
243 243 2 :

['commit_graph_parse_extra_edge_list', 'commit_graph_parse_commit_data']

243 243 git_commit_graph_file_parse call site: 00124 /src/libgit2/src/libgit2/commit_graph.c:292
232 347 3 :

['git__free.5706', 'git_error_set_oom', 'git_str_grow']

232 347 git_str_vprintf call site: 00021 /src/libgit2/src/util/str.c:529
126 126 1 :

['get_passwd_home']

248 367 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
126 126 1 :

['get_passwd_home']

248 248 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356
120 120 1 :

['git_futils_mmap_free']

120 120 git_commit_graph_file_close call site: 00179 /src/libgit2/src/libgit2/commit_graph.c:655
116 116 1 :

['git_error_set_oom']

116 116 git_str_try_grow call site: 00004 /src/libgit2/src/util/str.c:75
18 133 11 :

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

18 133 getseed call site: 00000 /src/libgit2/src/util/rand.c:93
9 9 1 :

['git_vector_free_deep']

9 9 git_merge_driver_global_init call site: 00000 /src/libgit2/src/libgit2/merge_driver.c:220
8 8 1 :

['git_filter_free']

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

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

4 236 git_error_vset call site: 00025 /src/libgit2/src/util/errors.c:205
0 126 1 :

['git_str_put']

4 362 git_error_vset call site: 00014 /src/libgit2/src/util/errors.c:201

Runtime coverage analysis

Covered functions
122
Functions that are reachable but not covered
45
Reachable functions
92
Percentage of reachable functions covered
51.09%
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/util/errors.c 5
src/util/thread.c 2
src/util/alloc.h 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: 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 57 33.1%
gold [1:9] 15 8.72%
yellow [10:29] 5 2.90%
greenyellow [30:49] 3 1.74%
lawngreen 50+ 92 53.4%
All colors 172 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
750 750 6 :

['compute_minrun', 'collapse', 'check_invariant', 'merge', 'count_run', 'git__free.13529']

750 810 git__tsort_r call site: 00000 /src/libgit2/src/util/tsort.c:346
239 239 2 :

['midx_parse_object_offsets', 'midx_parse_object_large_offsets']

239 239 git_midx_parse call site: 00152 /src/libgit2/src/libgit2/midx.c:275
232 347 3 :

['git__free.5706', 'git_error_set_oom', 'git_str_grow']

232 347 git_str_vprintf call site: 00021 /src/libgit2/src/util/str.c:529
126 126 1 :

['get_passwd_home']

248 367 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
126 126 1 :

['get_passwd_home']

248 248 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356
120 120 1 :

['git_futils_mmap_free']

120 125 git_midx_close call site: 00164 /src/libgit2/src/libgit2/midx.c:484
116 116 1 :

['git_error_set_oom']

116 116 git_str_try_grow call site: 00004 /src/libgit2/src/util/str.c:75
18 133 11 :

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

18 133 getseed call site: 00000 /src/libgit2/src/util/rand.c:93
9 9 1 :

['git_vector_free_deep']

9 9 git_merge_driver_global_init call site: 00000 /src/libgit2/src/libgit2/merge_driver.c:220
8 8 1 :

['git_filter_free']

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

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

4 236 git_error_vset call site: 00025 /src/libgit2/src/util/errors.c:205
0 126 1 :

['git_str_put']

4 362 git_error_vset call site: 00014 /src/libgit2/src/util/errors.c:201

Runtime coverage analysis

Covered functions
126
Functions that are reachable but not covered
50
Reachable functions
105
Percentage of reachable functions covered
52.38%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
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/util/errors.c 5
src/util/thread.c 2
src/util/alloc.h 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 1
src/util/vector.c 5
src/util/alloc.c 1
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 49 38.8%
gold [1:9] 5 3.96%
yellow [10:29] 7 5.55%
greenyellow [30:49] 2 1.58%
lawngreen 50+ 63 50.0%
All colors 126 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
750 750 6 :

['compute_minrun', 'collapse', 'check_invariant', 'merge', 'count_run', 'git__free.13529']

750 810 git__tsort_r call site: 00000 /src/libgit2/src/util/tsort.c:346
126 126 1 :

['get_passwd_home']

248 367 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
126 126 1 :

['get_passwd_home']

248 248 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356
116 116 1 :

['git_error_set_oom']

116 116 git_str_try_grow call site: 00010 /src/libgit2/src/util/str.c:75
18 133 11 :

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

18 133 getseed call site: 00000 /src/libgit2/src/util/rand.c:93
9 9 1 :

['git_vector_free_deep']

9 9 git_merge_driver_global_init call site: 00000 /src/libgit2/src/libgit2/merge_driver.c:220
8 8 1 :

['git_filter_free']

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

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

4 236 git_error_vset call site: 00031 /src/libgit2/src/util/errors.c:205
2 2 1 :

['memchr']

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

['git_str_put']

4 362 git_error_vset call site: 00021 /src/libgit2/src/util/errors.c:201
0 115 1 :

['git_error_set']

0 115 git_odb__format_object_header call site: 00062 /src/libgit2/src/libgit2/odb.c:99
0 115 1 :

['git_error_set']

0 115 git_odb__hashobj call site: 00058 /src/libgit2/src/libgit2/odb.c:129

Runtime coverage analysis

Covered functions
165
Functions that are reachable but not covered
24
Reachable functions
76
Percentage of reachable functions covered
68.42%
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/util/errors.c 5
src/util/thread.c 2
src/util/str.c 7
src/util/alloc.h 3
src/util/str.h 1
src/util/alloc.c 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: 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 945 70.4%
gold [1:9] 14 1.04%
yellow [10:29] 14 1.04%
greenyellow [30:49] 1 0.07%
lawngreen 50+ 368 27.4%
All colors 1342 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
3077 4390 25 :

['htonl', 'git_str_oom.9631', 'git_filebuf_hash', 'git_oid_size.9596', 'write_at', 'git_futils_fsync_parent', 'git_hash_fmt', 'update_header_and_rehash', 'index_path', 'git_str_dispose', 'git_filebuf_write', 'git_str_puts', 'git_str_cstr.9629', 'p_rename', 'git_vector_sort', 'git_mwindow_free_all', 'git_str_sets', 'git_str_shorten', 'p_fsync.9630', 'git_filebuf_open', 'git_filebuf_commit_at', 'git_hash_final', 'git_oidmap_size', 'git_filebuf_cleanup', 'close']

3077 4735 git_indexer_commit call site: 00764 /src/libgit2/src/libgit2/indexer.c:1285
750 750 6 :

['compute_minrun', 'collapse', 'check_invariant', 'merge', 'count_run', 'git__free.13529']

750 810 git__tsort_r call site: 01022 /src/libgit2/src/util/tsort.c:346
696 696 1 :

['check_object_connectivity']

812 1987 store_object call site: 00648 /src/libgit2/src/libgit2/indexer.c:507
421 421 2 :

['git_odb_stream_free', 'git_odb_open_wstream']

421 421 git_odb_write call site: 00169 /src/libgit2/src/libgit2/odb.c:1653
338 338 1 :

['deflate']

338 458 git_zstream_get_output_chunk call site: 00546 /src/libgit2/src/util/zstream.c:122
232 347 3 :

['git__free.5706', 'git_error_set_oom', 'git_str_grow']

232 347 git_str_vprintf call site: 00035 /src/libgit2/src/util/str.c:529
179 179 1 :

['git_commit_graph_refresh']

181 181 git_odb_refresh call site: 00135 /src/libgit2/src/libgit2/odb.c:1948
139 268 3 :

['git_mwindow_close_lru_window_locked', 'git_futils_mmap_ro', 'git__free.665']

139 268 new_window_locked call site: 00434 /src/libgit2/src/libgit2/mwindow.c:367
133 270 2 :

['git_mwindow_find_lru_file_locked', 'git_mwindow_free_all_locked']

141 545 git_mwindow_file_register call site: 00298 /src/libgit2/src/libgit2/mwindow.c:473
126 126 1 :

['get_passwd_home']

248 367 git_sysdir_guess_xdg_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:401
126 126 1 :

['get_passwd_home']

248 248 git_sysdir_guess_home_dirs call site: 00000 /src/libgit2/src/libgit2/sysdir.c:356
125 125 1 :

['git_array_grow']

125 125 impl__write call site: 00000 /src/libgit2/src/libgit2/odb_mempack.c:59

Runtime coverage analysis

Covered functions
251
Functions that are reachable but not covered
277
Reachable functions
464
Percentage of reachable functions covered
40.3%
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/util/alloc.h 3
src/libgit2/odb.c 33
src/util/errors.c 7
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/util/alloc.c 3
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/util/errors.h 1
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/util/thread.h 6
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

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 4059 68.0%
gold [1:9] 480 8.04%
yellow [10:29] 159 2.66%
greenyellow [30:49] 37 0.61%
lawngreen 50+ 1233 20.6%
All colors 5968 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
9445 9445 1 :

['filesystem_iterator_entry_hash']

9445 9445 filesystem_iterator_entry_init call site: 04714 /src/libgit2/src/libgit2/iterator.c:1334
6342 6342 2 :

['git_tree_entry_bypath', 'git_tree_entry_free']

6573 6573 filesystem_iterator_is_submodule call site: 04705 /src/libgit2/src/libgit2/iterator.c:1113
4423 4423 1 :

['git_repository_index__weakptr']

4423 8515 iterator_init_common call site: 03823 /src/libgit2/src/libgit2/iterator.c:131
4399 4399 2 :

['ensure_remote_doesnot_exist', 'ensure_remote_name_is_valid']

8940 20759 git_remote_create_with_opts call site: 00045 /src/libgit2/src/libgit2/remote.c:227
3706 3706 1 :

['dotgit_flags']

3706 3772 git_path_str_is_valid call site: 03979 /src/libgit2/src/libgit2/path.c:320
1432 1432 1 :

['git_config_foreach_match']

1432 1432 check_extensions call site: 00000 /src/libgit2/src/libgit2/repository.c:1905
1062 5019 7 :

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

1066 5591 repo_init_structure call site: 00000 /src/libgit2/src/libgit2/repository.c:2544
843 843 4 :

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

843 843 refresh_multi_pack_index call site: 02895 /src/libgit2/src/libgit2/odb_pack.c:486
750 750 6 :

['compute_minrun', 'collapse', 'check_invariant', 'merge', 'count_run', 'git__free.13529']

750 810 git__tsort_r call site: 01137 /src/libgit2/src/util/tsort.c:346
696 696 1 :

['check_object_connectivity']

812 1987 store_object call site: 03118 /src/libgit2/src/libgit2/indexer.c:507
500 500 1 :

['git_repository_free']

500 500 git_repository_open_ext call site: 00000 /src/libgit2/src/libgit2/repository.c:1177
491 1100 9 :

['git_error_set', 'git__calloc', 'git__is_sizet.10468', 'git_midx_parse', 'git_midx_free', 'fstat', 'git_str_sets', 'git_futils_mmap_ro', 'close']

491 1100 git_midx_open call site: 02840 /src/libgit2/src/libgit2/midx.c:302

Runtime coverage analysis

Covered functions
794
Functions that are reachable but not covered
856
Reachable functions
1541
Percentage of reachable functions covered
44.45%
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/util/errors.c 11
src/util/thread.c 2
src/util/str.c 26
src/util/alloc.h 3
src/util/str.h 7
src/libgit2/common.h 1
src/libgit2/refspec.c 6
src/util/alloc.c 6
src/libgit2/refs.c 30
src/libgit2/repository.c 28
src/util/util.c 18
src/libgit2/config.c 44
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 32
src/libgit2/config_list.c 14
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 12
src/util/vector.h 4
src/util/tsort.c 11
deps/pcre/pcre_exec.c 4
src/util/errors.h 1
src/libgit2/push.c 3
src/libgit2/config_cache.c 3
src/util/runtime.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 13
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 10
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 9
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

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 *'] 67 0 404 70 29 2097 0 15701 5169
git_smart_subtransport_http /src/libgit2/src/libgit2/transports/http.c 3 ['struct.git_smart_subtransport **', 'struct.git_transport *', 'char *'] 30 0 80 14 4 205 0 1477 1035
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 *'] 66 0 279 50 19 1959 0 14742 1012
git_transport_local /src/libgit2/src/libgit2/transports/local.c 3 ['struct.git_transport.2954 **', 'struct.git_remote.2947 *', 'char *'] 65 0 126 12 4 1638 0 12035 847
git_email_create_from_commit /src/libgit2/src/libgit2/email.c 3 ['struct.git_str *', 'struct.git_commit *', 'struct.git_email_create_options.1937 *'] 62 0 180 25 9 1738 0 13062 660
git_index_add_all /src/libgit2/src/libgit2/index.c 5 ['struct.git_index *', 'struct.git_strarray *', 'int', 'func_type *', 'char *'] 65 0 145 23 9 1685 0 12609 214
crlf_stream /src/libgit2/src/libgit2/crlf.c 5 ['struct.git_writestream **', 'struct.git_filter *', 'char **', 'struct.git_filter_source *', 'struct.git_writestream *'] 34 0 32 3 2 952 2 7200 170

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

Functions statically reachable by fuzzers
72.0%
2696 / 3763
Cyclomatic complexity statically reachable by fuzzers
78.0%
20898 / 26744

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

Fuzz engine guidance

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

build/../fuzzers/config_file_fuzzer.c

Dictionary

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


Fuzzer function priority

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

-focus_function=['all_iter_next', 'git__tsort_r', 'config_memory_open', 'git_config_add_backend', 'git_strmap_set', 'config_backend_new', 'git_strmap_free', 'git_config_foreach_match', 'git_config_new', 'git_str_put']

build/../fuzzers/patch_parse_fuzzer.c

Dictionary

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


Fuzzer function priority

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

-focus_function=['git_str_vprintf', 'git_str_put', 'set_error_from_buffer', 'git_str_try_grow', 'check_patch', 'git__calloc', 'git_str_grow', 'git_str_puts', 'git__linenlen']

build/../fuzzers/commit_graph_fuzzer.c

Dictionary

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


Fuzzer function priority

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

-focus_function=['commit_graph_parse_oid_lookup', 'SHA1DCFinal', 'git_hash_sha1_init', 'SHA1DCUpdate', 'git_str_vprintf', 'git_commit_graph_file_close', 'sha1_recompression_step', 'git_hash_ctx_cleanup', 'git_str_put', 'set_error_from_buffer']

build/../fuzzers/midx_fuzzer.c

Dictionary

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


Fuzzer function priority

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

-focus_function=['SHA1DCFinal', 'midx_parse_oid_lookup', 'git_hash_sha1_init', 'SHA1DCUpdate', 'git_str_vprintf', 'git_midx_close', 'sha1_recompression_step', 'git_hash_ctx_cleanup', 'git_str_put', 'set_error_from_buffer']

build/../fuzzers/objects_fuzzer.c

Dictionary

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


Fuzzer function priority

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

-focus_function=['SHA1DCFinal', 'git_hash_sha1_init', 'SHA1DCUpdate', 'git_str_grow', 'sha1_recompression_step', 'git_cached_obj_decref', 'git_str_try_grow', 'git_str_put', 'git_odb__hashobj']

build/../fuzzers/packfile_fuzzer.c

Dictionary

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


Fuzzer function priority

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

-focus_function=['git_indexer_commit', 'git_str_putc', 'inflate', 'git__strdup', 'git__tsort_r', 'store_object', 'git_futils_mmap_ro', 'git_oid_equal', 'git_odb_refresh', 'git__calloc']

build/../fuzzers/download_refs_fuzzer.c

Dictionary

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


Fuzzer function priority

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

-focus_function=['git_transport_smart', 'git_refdb_backend_fs', 'iterator_for_filesystem', 'git_path_str_is_valid', 'git_tree_free', 'git_sysdir_find_system_file', 'p_realpath', 'git_repository_refdb__weakptr', 'filesystem_iterator_init']

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

Directories in report

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