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

Project functions overview

The following table shows data about each function in the project. The functions included in this table correspond to all functions that exist in the executables of the fuzzers. As such, there may be functions that are from third-party libraries.

For further technical details on the meaning of columns in the below table, please see the Glossary .

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

Fuzzer details

Fuzzer: 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 30 12.4%
gold [1:9] 22 9.12%
yellow [10:29] 10 4.14%
greenyellow [30:49] 1 0.41%
lawngreen 50+ 178 73.8%
All colors 241 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
5 23 git_str_vprintf call site: 00023 git_error_set_oom
2 9 git_str_init call site: 00009 git_str_try_grow
2 32 git_str_put call site: 00032 git_str_puts
2 41 set_error_from_buffer call site: 00041 git_error_set_oom
2 44 git_str_try_grow call site: 00044 git_error_set_oom
2 197 check_patch call site: 00197 git_parse_err
2 217 patch_parsed__free call site: 00217 patch_parse_ctx_free
2 238 LLVMFuzzerTestOneInput call site: 00238 git_patch__free
1 4 git__calloc call site: 00004 threadstate_get
1 37 git_str_puts call site: 00037 __errno_location
1 47 git__calloc call site: 00047 git_error_set_oom
1 51 git__linenlen call site: 00051 git__free

Runtime coverage analysis

Covered functions
154
Functions that are reachable but not covered
12
Reachable functions
81
Percentage of reachable functions covered
85.19%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
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/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 100 52.9%
gold [1:9] 12 6.34%
yellow [10:29] 7 3.70%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 70 37.0%
All colors 189 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
51 130 commit_graph_parse_oid_lookup call site: 00130 git_commit_graph_entry_find
11 81 SHA1DCFinal call site: 00081 git_hash_sha256_final
6 49 git_hash_sha1_init call site: 00049 git_hash_sha256_ctx_init
6 69 SHA1DCUpdate call site: 00069 git_hash_sha256_update
5 20 git_str_vprintf call site: 00020 git_error_set_oom
4 183 git_commit_graph_file_close call site: 00183 git_futils_mmap_free
3 65 sha1_recompression_step call site: 00065 abort
3 94 git_hash_ctx_cleanup call site: 00094 git_hash_sha256_ctx_cleanup
2 2 git_str_init call site: 00002 git_str_try_grow
2 29 git_str_put call site: 00029 git_str_puts
2 38 set_error_from_buffer call site: 00038 git_error_set_oom
2 41 git_str_try_grow call site: 00041 git_error_set_oom

Runtime coverage analysis

Covered functions
119
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: 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 51 39.2%
gold [1:9] 7 5.38%
yellow [10:29] 7 5.38%
greenyellow [30:49] 1 0.76%
lawngreen 50+ 64 49.2%
All colors 130 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
11 103 SHA1DCFinal call site: 00103 git_hash_sha256_final
6 71 git_hash_sha1_init call site: 00071 git_hash_sha256_ctx_init
6 91 SHA1DCUpdate call site: 00091 git_hash_sha256_update
5 8 git_str_init call site: 00008 git_str_try_grow
3 87 sha1_recompression_step call site: 00087 abort
3 123 git_cached_obj_decref call site: 00123 git_odb_object__free
2 16 git_str_try_grow call site: 00016 git_error_set_oom
2 35 git_str_put call site: 00035 git_str_puts
2 59 git_odb__hashobj call site: 00059 git_error_set
2 127 git_cached_obj_decref call site: 00127 git__free
1 26 git_str_vprintf call site: 00026 git__free
1 30 git_str_vprintf call site: 00030 git_str_put

Runtime coverage analysis

Covered functions
161
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: 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 200 65.7%
gold [1:9] 7 2.30%
yellow [10:29] 3 0.98%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 94 30.9%
All colors 304 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
127 165 git_config_iterator_new call site: 00165 git_regexp_compile
28 122 git__tsort_r call site: 00122 collapse
7 107 git_config_add_backend call site: 00107 try_remove_existing_backend
4 74 git__strdup call site: 00074 git__strdup
4 293 git_config_foreach_match call site: 00293 git_error_set_after_callback_function
3 91 config_list_free call site: 00091 git__free
2 8 git_str_init call site: 00008 git_str_try_grow
2 31 git_str_put call site: 00031 git_str_puts
2 40 set_error_from_buffer call site: 00040 git_error_set_oom
2 43 git_str_try_grow call site: 00043 git_error_set_oom
2 98 git_str_set call site: 00098 git_config_list_free
2 151 git__tsort call site: 00151 resize_vector

Runtime coverage analysis

Covered functions
166
Functions that are reachable but not covered
61
Reachable functions
119
Percentage of reachable functions covered
48.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.
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/config_file_fuzzer.c 2
src/libgit2/config.c 16
src/util/alloc.c 3
src/util/errors.c 7
src/util/thread.c 2
src/util/str.c 8
src/util/alloc.h 3
src/util/str.h 1
src/util/vector.c 7
src/util/thread.h 2
src/libgit2/config_mem.c 2
src/libgit2/config_list.c 7
src/libgit2/common.h 1
src/util/tsort.c 12
src/util/util.c 1
src/util/regexp.c 1
deps/pcre/pcre_compile.c 31
deps/pcre/pcre_newline.c 1
src/util/errors.h 1
build/..config_backend.h 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 875 62.3%
gold [1:9] 132 9.40%
yellow [10:29] 16 1.14%
greenyellow [30:49] 1 0.07%
lawngreen 50+ 379 27.0%
All colors 1403 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
169 890 git_packfile_unpack call site: 00890 fix_thin_pack
74 1170 lock_file call site: 01170 git_futils_creat_locked_withpath
65 581 inflate call site: 00581 deflate
57 670 store_object call site: 00670 check_object_connectivity
39 850 git_packfile_unpack call site: 00850 packfile_unpack_compressed
28 498 git_oid_equal call site: 00498 pack_entry_find_offset
27 412 packfile_error call site: 00412 git_mwindow_file_register
27 1077 git__tsort_r call site: 01077 collapse
19 830 pack_dependency_chain call site: 00830 packfile_unpack_compressed
18 144 p_open call site: 00144 git_fs_path_set_error
18 184 git__calloc call site: 00184 hash_header
15 390 git_packfile_unpack_header call site: 00390 pack_index_open_locked

Runtime coverage analysis

Covered functions
278
Functions that are reachable but not covered
261
Reachable functions
470
Percentage of reachable functions covered
44.47%
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 3
src/util/alloc.h 3
src/libgit2/odb.c 31
src/util/errors.c 10
src/util/thread.c 2
src/util/str.c 19
src/util/str.h 5
src/libgit2/object.c 6
src/libgit2/oid.h 10
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 43
src/util/rand.c 2
src/libgit2/pack.c 46
src/util/util.c 1
src/libgit2/mwindow.c 10
src/util/vector.c 10
src/util/runtime.c 3
src/util/thread.h 6
src/util/errors.h 1
src/libgit2/hashmap_oid.h 1
src/util/zstream.c 11
deps/zlib/inflate.c 10
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 1
src/libgit2/cache.c 20
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 12
src/util/filebuf.c 12
src/util/fs_path.h 1
src/util/hashmap_str.h 7
src/util/pool.c 4
src/util/unix/posix.h 1
build/../src/util/str.h 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 95 44.8%
gold [1:9] 17 8.01%
yellow [10:29] 7 3.30%
greenyellow [30:49] 1 0.47%
lawngreen 50+ 92 43.3%
All colors 212 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
43 159 midx_parse_oid_lookup call site: 00159 git_midx_entry_find
11 81 SHA1DCFinal call site: 00081 git_hash_sha256_final
6 49 git_hash_sha1_init call site: 00049 git_hash_sha256_ctx_init
6 69 SHA1DCUpdate call site: 00069 git_hash_sha256_update
5 20 git_str_vprintf call site: 00020 git_error_set_oom
4 204 git_midx_close call site: 00204 git_futils_mmap_free
3 65 sha1_recompression_step call site: 00065 abort
3 94 git_hash_ctx_cleanup call site: 00094 git_hash_sha256_ctx_cleanup
2 2 git_str_init call site: 00002 git_str_try_grow
2 29 git_str_put call site: 00029 git_str_puts
2 38 set_error_from_buffer call site: 00038 git_error_set_oom
2 41 git_str_try_grow call site: 00041 git_error_set_oom

Runtime coverage analysis

Covered functions
123
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 2
src/libgit2/midx.c 9
src/libgit2/oid.h 6
src/util/vector.c 5
src/util/alloc.c 1
src/util/util.c 2
src/util/vector.h 2
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: 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 993 52.9%
gold [1:9] 241 12.8%
yellow [10:29] 86 4.58%
greenyellow [30:49] 1 0.05%
lawngreen 50+ 554 29.5%
All colors 1875 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
43 1302 git_commit_graph_new call site: 01302 git_commit_graph_file_open
33 1079 p_mmap call site: 01079 git_midx_parse
30 423 compile_branch call site: 00423 check_escape
27 286 bisort call site: 00286 collapse
27 855 dowild call site: 00855 __ctype_b_loc
27 1030 git_fs_path_set_error call site: 01030 remove_multi_pack_index
24 935 git_odb_new_ext call site: 00935 git_cache_dispose
23 457 could_be_empty_branch call site: 00457 compile_regex
21 1115 git__suffixcmp call site: 01115 git_midx_free
20 1583 git_oid_cpy call site: 01583 git_grafts_remove
18 380 git_config_snapshot call site: 00380 get_optional_config
18 558 git_str_detach call site: 00558 get_optional_config

Runtime coverage analysis

Covered functions
803
Functions that are reachable but not covered
215
Reachable functions
580
Percentage of reachable functions covered
62.93%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
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/download_refs_fuzzer.c 1
src/libgit2/remote.c 43
src/util/errors.c 10
src/util/thread.c 2
src/util/str.c 19
src/util/alloc.h 3
src/util/str.h 6
src/libgit2/common.h 1
src/libgit2/refspec.c 6
src/util/alloc.c 4
src/libgit2/refs.c 6
src/libgit2/repository.c 18
src/util/util.c 9
src/libgit2/config.c 41
src/libgit2/sysdir.c 7
src/util/fs_path.c 15
src/util/vector.c 14
src/util/thread.h 7
src/libgit2/config_file.c 1
src/util/tsort.c 12
src/util/regexp.c 1
deps/pcre/pcre_compile.c 31
deps/pcre/pcre_newline.c 1
src/util/errors.h 1
src/libgit2/push.c 3
src/libgit2/config_cache.c 3
build/../fuzzers/fuzzer_utils.c 1
src/util/runtime.c 3
src/libgit2/buf.c 1
src/libgit2/transport.c 3
src/libgit2/remote.h 1
src/libgit2/strarray.c 2
src/libgit2/proxy.c 3
src/libgit2/fetch.c 6
src/util/wildmatch.c 2
src/libgit2/oid.h 9
src/util/util.h 2
src/libgit2/oid.c 8
src/libgit2/odb.c 18
src/libgit2/cache.c 14
src/libgit2/object.c 1
src/util/vector.h 2
src/libgit2/odb_loose.c 2
src/libgit2/odb_pack.c 10
src/libgit2/midx.c 11
src/util/futils.c 17
src/util/posix.c 4
src/util/integer.h 2
src/util/unix/map.c 2
src/libgit2/mwindow.c 12
src/libgit2/pack.c 9
src/util/hashmap_str.h 7
src/util/fs_path.h 2
src/libgit2/commit_graph.c 13
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/hashmap_oid.h 1
src/libgit2/cache.h 1
src/libgit2/grafts.c 21
src/libgit2/parse.c 5
src/util/array.h 1
src/util/filebuf.h 1
src/util/filebuf.c 10
deps/zlib/deflate.c 7
deps/zlib/adler32.c 2
deps/zlib/trees.c 3
src/util/rand.c 2
src/util/pool.c 4
src/util/unix/posix.h 1
src/libgit2/oidarray.c 1

Fuzzer: revparse_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 1459 60.4%
gold [1:9] 231 9.57%
yellow [10:29] 142 5.88%
greenyellow [30:49] 20 0.82%
lawngreen 50+ 561 23.2%
All colors 2413 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
280 2041 git_config__get_string_buf call site: 02041 git_remote_lookup
109 760 refresh_multi_pack_index call site: 00760 process_multi_pack_index_pack
95 1592 git_reference_name call site: 01592 git_revwalk__push_ref
68 1152 odb_read_1 call site: 01152 git_odb__hash
56 1783 prepare_walk call site: 01783 git_object_lookup
46 689 git_midx_open call site: 00689 git_midx_parse
45 1723 git__strndup call site: 01723 git_revwalk__commit_lookup
42 933 git_commit_graph_new call site: 00933 git_commit_graph_file_open
41 1501 extract_curly_braces_content call site: 01501 handle_caret_curly_syntax
32 653 git_fs_path_set_error call site: 00653 remove_multi_pack_index
32 1884 revparse call site: 01884 handle_colon_syntax
27 236 bisort call site: 00236 collapse

Runtime coverage analysis

Covered functions
666
Functions that are reachable but not covered
368
Reachable functions
715
Percentage of reachable functions covered
48.53%
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/revparse_fuzzer.c 1
src/libgit2/revparse.c 31
src/util/errors.c 10
src/util/thread.c 2
src/util/str.c 19
src/util/alloc.h 3
src/util/str.h 7
src/libgit2/refs.c 24
src/libgit2/config_cache.c 2
src/util/thread.h 8
src/libgit2/repository.c 17
src/util/util.c 12
src/libgit2/config.c 38
src/libgit2/sysdir.c 7
src/util/fs_path.c 12
src/util/alloc.c 5
src/util/vector.c 16
src/libgit2/config_file.c 1
src/libgit2/common.h 1
src/util/tsort.c 12
src/libgit2/refdb.c 12
src/libgit2/refdb_fs.c 3
src/util/futils.c 10
src/util/fs_path.h 2
src/util/hashmap_str.h 7
src/util/pool.c 7
src/util/sortedcache.c 1
src/util/util.h 3
src/libgit2/object.c 18
src/libgit2/oid.h 11
src/libgit2/odb.c 32
src/libgit2/cache.c 25
src/util/vector.h 3
src/libgit2/odb_loose.c 2
src/libgit2/odb_pack.c 10
src/libgit2/oid.c 10
src/libgit2/midx.c 11
src/util/posix.c 2
src/util/integer.h 3
src/util/unix/map.c 2
src/libgit2/mwindow.c 12
src/libgit2/pack.c 10
src/util/runtime.c 3
src/libgit2/commit_graph.c 17
src/util/hash.c 6
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/hashmap_oid.h 1
src/libgit2/cache.h 1
src/util/regexp.c 4
deps/pcre/pcre_compile.c 31
deps/pcre/pcre_newline.c 2
deps/pcre/pcre_exec.c 4
src/libgit2/tag.c 2
src/libgit2/commit.c 9
src/libgit2/object_api.c 5
src/libgit2/revwalk.c 25
src/util/pqueue.c 5
src/libgit2/commit_list.c 10
src/util/array.h 2
src/libgit2/signature.c 5
src/libgit2/grafts.c 3
src/libgit2/tree.c 9
src/libgit2/tree.h 1
src/libgit2/reflog.c 8
src/libgit2/reflog.h 1
src/libgit2/branch.c 4
src/libgit2/remote.c 17
src/libgit2/refspec.c 8
src/util/errors.h 1
src/libgit2/push.c 3
src/util/wildmatch.c 2
src/util/date.c 18

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 ['N/A', 'int', 'N/A'] 70 0 396 70 29 1618 0 12163 6611
http_stream_write /src/libgit2/src/libgit2/transports/http.c 3 ['N/A', 'N/A', 'size_t'] 24 0 205 38 14 242 0 3402 3034
git_merge /src/libgit2/src/libgit2/merge.c 5 ['N/A', 'N/A', 'size_t', 'N/A', 'N/A'] 77 0 263 50 19 1483 0 11351 962
local_download_pack /src/libgit2/src/libgit2/transports/local.c 3 ['N/A', 'N/A', 'N/A'] 39 0 405 53 22 697 0 4547 732
git_email_create_from_commit /src/libgit2/src/libgit2/email.c 3 ['N/A', 'N/A', 'N/A'] 75 0 161 25 9 1187 0 8999 690
refdb_fs_backend__rename /src/libgit2/src/libgit2/refdb_fs.c 7 ['N/A', 'N/A', 'N/A', 'N/A', 'int', 'N/A', 'N/A'] 37 0 216 34 14 589 0 3680 479
git_patch_from_buffers /src/libgit2/src/libgit2/patch_generate.c 8 ['N/A', 'N/A', 'size_t', 'N/A', 'N/A', 'size_t', 'N/A', 'N/A'] 78 0 54 3 2 1208 0 9357 420

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

Functions statically reachable by fuzzers
60.0%
2419 / 4039
Cyclomatic complexity statically reachable by fuzzers
68.0%
20850 / 30563

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 Runtime reached by Fuzzers Combined reached by Fuzzers Fuzzers runtime hit Func lines hit % I Count BB Count Cyclomatic complexity Functions reached Reached by functions Accumulated cyclomatic complexity Undiscovered complexity

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/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_init', 'git_str_put', 'set_error_from_buffer', 'git_str_try_grow', 'check_patch', 'patch_parsed__free', 'LLVMFuzzerTestOneInput', 'git__calloc', 'git_str_puts']

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_init', 'git_str_put']

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_init', 'sha1_recompression_step', 'git_cached_obj_decref', 'git_str_try_grow', 'git_str_put', 'git_odb__hashobj']

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=['git_config_iterator_new', 'git__tsort_r', 'git_config_add_backend', 'git__strdup', 'git_config_foreach_match', 'config_list_free', 'git_str_init', 'git_str_put', 'set_error_from_buffer', 'git_str_try_grow']

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_packfile_unpack', 'lock_file', 'inflate', 'store_object', 'git_oid_equal', 'packfile_error', 'git__tsort_r', 'pack_dependency_chain', 'p_open']

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=['midx_parse_oid_lookup', 'SHA1DCFinal', 'git_hash_sha1_init', 'SHA1DCUpdate', 'git_str_vprintf', 'git_midx_close', 'sha1_recompression_step', 'git_hash_ctx_cleanup', 'git_str_init', 'git_str_put']

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_commit_graph_new', 'p_mmap', 'compile_branch', 'bisort', 'dowild', 'git_fs_path_set_error', 'git_odb_new_ext', 'could_be_empty_branch', 'git__suffixcmp', 'git_oid_cpy']

build/../fuzzers/revparse_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_config__get_string_buf', 'refresh_multi_pack_index', 'git_reference_name', 'odb_read_1', 'prepare_walk', 'git_midx_open', 'git__strndup', 'git_commit_graph_new', 'extract_curly_braces_content', 'git_fs_path_set_error']

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 35 11 31.42% ['commit_graph_fuzzer', 'revparse_fuzzer', 'config_file_fuzzer', 'patch_parse_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer']
resolve_deltas 41 21 51.21% ['packfile_fuzzer', 'download_refs_fuzzer']
git_mwindow_file_register 41 18 43.90% ['packfile_fuzzer', 'download_refs_fuzzer']
git_packfile_unpack 115 44 38.26% ['packfile_fuzzer']
git_libgit2_opts 255 12 4.705% ['packfile_fuzzer', 'revparse_fuzzer', 'download_refs_fuzzer']
resolve_symlink 57 22 38.59% ['packfile_fuzzer', 'revparse_fuzzer', 'download_refs_fuzzer']
lock_file 44 11 25.0% ['packfile_fuzzer', 'revparse_fuzzer', 'download_refs_fuzzer']
git_odb_mempack_oidmap__put_idx 62 31 50.0% ['packfile_fuzzer']
iterator_init_common 41 22 53.65% ['revparse_fuzzer', 'download_refs_fuzzer']
filesystem_iterator_examine_path 35 11 31.42% ['revparse_fuzzer', 'download_refs_fuzzer']
git_midx_open 40 10 25.0% ['revparse_fuzzer', 'download_refs_fuzzer']
git_mwindow_get_pack 34 18 52.94% ['revparse_fuzzer', 'download_refs_fuzzer']
git_odb__add_default_backends 52 28 53.84% ['revparse_fuzzer', 'download_refs_fuzzer']
load_alternates 34 12 35.29% ['revparse_fuzzer', 'download_refs_fuzzer']
refresh_multi_pack_index 35 13 37.14% ['revparse_fuzzer', 'download_refs_fuzzer']
packfile_open_locked 43 23 53.48% ['packfile_fuzzer', 'download_refs_fuzzer']
packed_reload 71 15 21.12% ['revparse_fuzzer', 'download_refs_fuzzer']
iter_load_paths 43 19 44.18% ['revparse_fuzzer', 'download_refs_fuzzer']
git_remote_create_with_opts 83 41 49.39% ['download_refs_fuzzer']
find_repo 47 16 34.04% ['revparse_fuzzer', 'download_refs_fuzzer']
load_workdir 65 9 13.84% ['revparse_fuzzer', 'download_refs_fuzzer']
validate_ownership 32 17 53.12% ['revparse_fuzzer', 'download_refs_fuzzer']
load_config 53 29 54.71% ['revparse_fuzzer', 'download_refs_fuzzer']
repo_init_config 56 29 51.78% ['revparse_fuzzer', 'download_refs_fuzzer']
repo_init_structure 67 26 38.80% ['revparse_fuzzer', 'download_refs_fuzzer']
prepare_walk 57 8 14.03% ['revparse_fuzzer', 'download_refs_fuzzer']
git_smart__negotiate_fetch 143 41 28.67% ['download_refs_fuzzer']
git_filebuf_printf 41 17 41.46% ['revparse_fuzzer', 'download_refs_fuzzer']
git_fs_path_dirname_r 47 25 53.19% ['packfile_fuzzer', 'revparse_fuzzer', 'download_refs_fuzzer']
git_fs_path_owner_is 34 11 32.35% ['revparse_fuzzer', 'download_refs_fuzzer']
mkdir_validate_dir 33 8 24.24% ['packfile_fuzzer', 'revparse_fuzzer', 'download_refs_fuzzer']
git_mwindow_packmap__put_idx 62 31 50.0% ['revparse_fuzzer', 'download_refs_fuzzer']
git_sortedcache_lockandload 33 9 27.27% ['revparse_fuzzer', 'download_refs_fuzzer']
binsearch 35 17 48.57% ['packfile_fuzzer', 'revparse_fuzzer', 'config_file_fuzzer', 'download_refs_fuzzer']
dowild 181 50 27.62% ['revparse_fuzzer', 'download_refs_fuzzer']
match 2322 235 10.12% ['revparse_fuzzer']
odb_read_1 53 24 45.28% ['packfile_fuzzer', 'revparse_fuzzer']
read_prefix_1 71 25 35.21% ['revparse_fuzzer']
locate_object_short_oid 47 17 36.17% ['revparse_fuzzer']
pack_entry_find_prefix 52 16 30.76% ['revparse_fuzzer']
packed_lookup 60 7 11.66% ['revparse_fuzzer']
packed_map_check 47 15 31.91% ['revparse_fuzzer']
reflog_parse 40 6 15.0% ['revparse_fuzzer']
retrieve_previously_checked_out_branch_or_revision 47 25 53.19% ['revparse_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/libgit2/reflog.h ['revparse_fuzzer'] []
/src/libgit2/src/libgit2/mailmap.c [] []
/src/libgit2/src/util/rand.c ['packfile_fuzzer', 'download_refs_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer']
/src/libgit2/src/libgit2/config_cache.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/filebuf.c ['packfile_fuzzer', 'download_refs_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer']
/src/libgit2/src/libgit2/attr_file.c [] []
/src/libgit2/src/libgit2/tree.h ['revparse_fuzzer'] []
/src/libgit2/src/libgit2/config_file.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/oidarray.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/branch.c ['revparse_fuzzer'] []
/src/libgit2/src/libgit2/pathspec.c [] []
/src/libgit2/src/libgit2/reflog.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/src/libgit2/buf.c ['download_refs_fuzzer'] []
/src/libgit2/src/util/alloc.h ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/settings.c [] []
/src/libgit2/src/util/posix.c ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/graph.c [] []
/src/libgit2/src/libgit2/remote.h ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/deps/xdiff/git-xdiff.h [] []
/src/libgit2/src/util/wildmatch.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/thread.h ['patch_parse_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['patch_parse_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/diff_driver.c [] []
/src/libgit2/src/libgit2/transports/httpclient.c [] []
/src/libgit2/src/libgit2/cache.h ['objects_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['objects_fuzzer']
/src/libgit2/src/util/futils.c ['commit_graph_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/proxy.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/patch.c ['patch_parse_fuzzer'] ['patch_parse_fuzzer']
/src/libgit2/src/libgit2/index.c [] []
/src/libgit2/deps/xdiff/xmerge.c [] []
/src/libgit2/src/util/hash.c ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/mwindow.c ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/diff_tform.c [] []
/src/libgit2/src/util/sortedcache.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/src/libgit2/clone.c [] []
/src/libgit2/src/libgit2/fetch.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/array.h ['patch_parse_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['patch_parse_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/deps/zlib/adler32.c ['packfile_fuzzer', 'download_refs_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer']
/src/libgit2/src/libgit2/merge.h [] []
/src/libgit2/src/libgit2/index.h [] []
/src/libgit2/src/libgit2/config_snapshot.c [] []
/src/libgit2/src/util/str.h ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/deps/pcre/pcre_newline.c ['config_file_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/src/libgit2/trace.c [] []
/src/libgit2/src/libgit2/cache.c ['objects_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['objects_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/deps/llhttp/llhttp.c [] []
/src/libgit2/src/libgit2/parse.c ['patch_parse_fuzzer', 'download_refs_fuzzer'] ['patch_parse_fuzzer', 'download_refs_fuzzer']
/src/libgit2/src/libgit2/ident.c [] []
/src/libgit2/src/libgit2/transports/smart.c [] []
/src/libgit2/src/libgit2/refdb_fs.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/src/libgit2/merge_file.c [] []
/src/libgit2/src/util/hashmap_str.h ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/diff_generate.c [] []
/src/libgit2/src/libgit2/pack.c ['commit_graph_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer']
/src/libgit2/src/libgit2/transports/httpparser.c [] []
/src/libgit2/src/libgit2/diff_print.c [] []
/src/libgit2/deps/zlib/inflate.c ['packfile_fuzzer'] ['packfile_fuzzer']
/src/libgit2/src/libgit2/midx.c ['midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/tree.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/src/util/integer.h ['patch_parse_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['patch_parse_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/vector.c ['config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/utf8.c [] []
/src/libgit2/src/libgit2/trace.h [] []
/src/libgit2/src/libgit2/common.h ['config_file_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['config_file_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/refdb.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/src/libgit2/object.c ['objects_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['objects_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/config_mem.c ['config_file_fuzzer'] ['config_file_fuzzer']
/src/libgit2/src/libgit2/config_list.c ['config_file_fuzzer'] ['config_file_fuzzer']
/src/libgit2/deps/zlib/inffast.c ['packfile_fuzzer'] ['packfile_fuzzer']
/src/libgit2/src/util/hash/collisiondetect.c ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/alloc.c ['patch_parse_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['patch_parse_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/deps/xdiff/xutils.c [] []
/src/libgit2/src/libgit2/push.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/merge_driver.c [] []
/src/libgit2/src/libgit2/iterator.c [] []
/src/libgit2/src/libgit2/odb_loose.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/allocators/failalloc.c [] []
/src/libgit2/src/libgit2/attr.c [] []
/src/libgit2/src/util/fs_path.c ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/indexer.c ['packfile_fuzzer'] ['packfile_fuzzer']
/src/libgit2/src/util/strlist.c [] []
/src/libgit2/src/libgit2/tree-cache.c [] []
/src/libgit2/deps/zlib/inftrees.c ['packfile_fuzzer'] ['packfile_fuzzer']
/src/libgit2/src/libgit2/config_backend.h [] []
/src/libgit2/src/util/bitvec.h [] []
/src/libgit2/src/util/errors.h ['config_file_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] []
/src/libgit2/src/libgit2/commit_list.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/src/util/unix/map.c ['commit_graph_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['commit_graph_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/path.h [] []
/src/libgit2/src/libgit2/diff_stats.c [] []
/src/libgit2/src/libgit2/config_parse.c [] []
/src/libgit2/src/libgit2/commit.c ['revparse_fuzzer'] []
/src/libgit2/src/util/regexp.c ['config_file_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/build/../fuzzers/patch_parse_fuzzer.c ['patch_parse_fuzzer'] []
/src/libgit2/src/libgit2/refs.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/hash.h ['packfile_fuzzer'] ['packfile_fuzzer']
/src/libgit2/src/libgit2/transports/git.c [] []
/src/libgit2/src/libgit2/crlf.c [] []
/src/libgit2/src/libgit2/patch_generate.c [] []
/src/libgit2/src/libgit2/pack-objects.c [] []
/src/libgit2/build/../fuzzers/packfile_fuzzer.c ['packfile_fuzzer'] []
/src/libgit2/src/util/fs_path.h ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/transports/auth.c [] []
/src/libgit2/src/libgit2/revparse.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/src/libgit2/strarray.c ['download_refs_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/deps/xdiff/xdiffi.c [] []
/src/libgit2/src/libgit2/delta.c ['packfile_fuzzer'] []
/src/libgit2/build/../fuzzers/commit_graph_fuzzer.c ['commit_graph_fuzzer'] []
/src/libgit2/src/util/hash/builtin.c ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/pool.c ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/streams/openssl.c [] []
/src/libgit2/src/libgit2/streams/tls.c [] []
/src/libgit2/src/libgit2/revwalk.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/build/../fuzzers/download_refs_fuzzer.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/commit_graph.c ['commit_graph_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['commit_graph_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/streams/socket.c [] []
/src/libgit2/src/util/errors.c ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/tsort.c ['config_file_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['config_file_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/net.c [] []
/src/libgit2/src/libgit2/path.c [] []
/src/libgit2/src/util/hash/sha1dc/sha1.c ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer']
/src/libgit2/src/util/filebuf.h ['packfile_fuzzer', 'download_refs_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer']
/src/libgit2/src/libgit2/tag.c ['revparse_fuzzer'] []
/src/libgit2/src/libgit2/odb.c ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['objects_fuzzer', 'packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/deps/pcre/pcre_exec.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/deps/pcre/pcre_compile.c ['config_file_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/worktree.c [] []
/src/libgit2/src/libgit2/transaction.c [] []
/src/libgit2/src/libgit2/odb_pack.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/unix/posix.h ['packfile_fuzzer', 'download_refs_fuzzer'] []
/src/libgit2/src/libgit2/annotated_commit.c [] []
/src/libgit2/deps/zlib/trees.c ['packfile_fuzzer', 'download_refs_fuzzer'] []
/src/libgit2/build/../fuzzers/config_file_fuzzer.c ['config_file_fuzzer'] []
/src/libgit2/src/libgit2/oid.h ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/deps/llhttp/api.c [] []
/src/libgit2/src/libgit2/config.c ['config_file_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['config_file_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/build/../fuzzers/objects_fuzzer.c ['objects_fuzzer'] []
/src/libgit2/src/util/hash/rfc6234/sha224-256.c ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/build/../fuzzers/midx_fuzzer.c ['midx_fuzzer'] []
/src/libgit2/src/libgit2/streams/mbedtls.c [] []
/src/libgit2/src/libgit2/transports/smart_protocol.c [] []
/src/libgit2/src/libgit2/transports/smart_pkt.c [] []
/src/libgit2/src/libgit2/odb_mempack.c ['packfile_fuzzer'] ['packfile_fuzzer']
/src/libgit2/src/libgit2/transports/ssh_libssh2.c [] []
/src/libgit2/src/libgit2/repository.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/unix/realpath.c [] []
/src/libgit2/src/libgit2/object_api.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/src/libgit2/refspec.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/util/util.h ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/build/../fuzzers/fuzzer_utils.c ['download_refs_fuzzer'] []
/src/libgit2/src/util/str.c ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/checkout.c [] []
/src/libgit2/deps/zlib/deflate.c ['packfile_fuzzer', 'download_refs_fuzzer'] []
/src/libgit2/deps/xdiff/xpatience.c [] []
/src/libgit2/src/util/unix/pthread.h [] []
/src/libgit2/src/libgit2/transports/local.c [] []
/src/libgit2/src/util/runtime.c ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/stream.h [] []
/src/libgit2/src/libgit2/signature.c ['revparse_fuzzer'] []
/src/libgit2/src/util/hash/sha1dc/ubc_check.c ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['commit_graph_fuzzer', 'objects_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer']
/src/libgit2/src/libgit2/merge.c [] []
/src/libgit2/build/../fuzzers/revparse_fuzzer.c ['revparse_fuzzer'] []
/src/libgit2/src/util/vector.h ['packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/iterator.h [] []
/src/libgit2/src/libgit2/grafts.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/hashmap_oid.h ['packfile_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['packfile_fuzzer', 'download_refs_fuzzer']
/src/libgit2/src/libgit2/parse.h ['patch_parse_fuzzer'] ['patch_parse_fuzzer']
/src/libgit2/src/libgit2/blob.c [] []
/src/libgit2/src/util/thread.c ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['patch_parse_fuzzer', 'commit_graph_fuzzer', 'objects_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/oid.c ['commit_graph_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['commit_graph_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/transports/http.c [] []
/src/libgit2/src/util/date.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/src/util/util.c ['patch_parse_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer'] ['patch_parse_fuzzer', 'config_file_fuzzer', 'packfile_fuzzer', 'midx_fuzzer', 'download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/libgit2/email.c [] []
/src/libgit2/src/libgit2/transport.c ['download_refs_fuzzer'] []
/src/libgit2/src/libgit2/transports/credential.c [] []
/src/libgit2/deps/xdiff/xemit.c [] []
/src/libgit2/src/libgit2/fetchhead.c [] []
/src/libgit2/src/util/varint.c [] []
/src/libgit2/src/libgit2/object.h [] []
/src/libgit2/src/libgit2/delta.h [] []
/src/libgit2/src/libgit2/remote.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer']
/src/libgit2/src/libgit2/diff_xdiff.c [] []
/src/libgit2/src/util/pool.h [] []
/src/libgit2/deps/zlib/crc32.c ['packfile_fuzzer'] ['packfile_fuzzer']
/src/libgit2/src/libgit2/submodule.c [] []
/src/libgit2/src/libgit2/ignore.c [] []
/src/libgit2/src/libgit2/sysdir.c ['download_refs_fuzzer', 'revparse_fuzzer'] ['download_refs_fuzzer', 'revparse_fuzzer']
/src/libgit2/src/util/allocators/stdalloc.c [] []
/src/libgit2/src/util/pqueue.c ['revparse_fuzzer'] ['revparse_fuzzer']
/src/libgit2/src/libgit2/streams/registry.c [] []
/src/libgit2/src/libgit2/hashsig.c [] []
/src/libgit2/src/libgit2/diff_file.c [] []
/src/libgit2/deps/llhttp/http.c [] []
/src/libgit2/deps/xdiff/xprepare.c [] []
/src/libgit2/src/libgit2/filter.c [] []
/src/libgit2/deps/zlib/zutil.c [] []
/src/libgit2/src/libgit2/patch_parse.c ['patch_parse_fuzzer'] ['patch_parse_fuzzer']
/src/libgit2/src/util/zstream.c ['packfile_fuzzer'] ['packfile_fuzzer']
/src/libgit2/src/libgit2/repository.h [] []
/src/libgit2/src/libgit2/diff_generate.h [] []
/src/libgit2/deps/xdiff/xhistogram.c [] []
/src/libgit2/src/libgit2/index_map.c [] []
/src/libgit2/src/libgit2/libgit2.c [] []
/src/libgit2/src/libgit2/attrcache.c [] []
/src/libgit2/src/libgit2/diff.c [] []

Directories in report

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