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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
222 332 2 :

['git_str_grow', 'git_error_set_oom']

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

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

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

['get_passwd_home']

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

['get_passwd_home']

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

['git_error_set_oom']

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

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

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

['git_vector_free_deep']

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

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

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

['git_filter_free']

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

['git_str_put']

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

['git_parse_err']

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

['git_parse_err']

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

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 git_patch_from_buffer [function] [call site] 00001
2 git_patch_parse_ctx_init [function] [call site] 00002
3 git_parse_ctx_init [function] [call site] 00003
4 git__linenlen [function] [call site] 00004
5 memchr [call site] 00005
3 git_atomic32_inc [function] [call site] 00006
2 git_patch_parse [function] [call site] 00007
3 git_error_set [function] [call site] 00008
4 git_error_vset [function] [call site] 00009
5 git_threadstate_get [function] [call site] 00010
6 git_tlsdata_get [function] [call site] 00011
7 pthread_getspecific [call site] 00012
6 git_str_init [function] [call site] 00013
7 git_str_grow [function] [call site] 00014
8 git_str_try_grow [function] [call site] 00015
9 git_error_set [function] [call site] 00016
9 git_error_set_oom [function] [call site] 00017
10 git_threadstate_get [function] [call site] 00018
11 git_tlsdata_set [function] [call site] 00019
12 pthread_setspecific [call site] 00020
5 __errno_location [call site] 00021
5 git_str_clear [function] [call site] 00022
5 git_str_vprintf [function] [call site] 00023
6 strlen [call site] 00024
6 git_error_set_oom [function] [call site] 00025
6 git_error_set_oom [function] [call site] 00026
6 git_str_grow [function] [call site] 00027
6 vsnprintf [call site] 00028
6 git_error_set_oom [function] [call site] 00029
6 git_error_set_oom [function] [call site] 00030
6 git_str_grow [function] [call site] 00031
5 git_str_put [function] [call site] 00032
6 git_error_set [function] [call site] 00033
6 git_error_set_oom [function] [call site] 00034
6 git_error_set_oom [function] [call site] 00035
6 git_str_grow [function] [call site] 00036
5 strerror [call site] 00037
5 git_str_puts [function] [call site] 00038
6 git_error_set [function] [call site] 00039
6 strlen [call site] 00040
6 git_str_put [function] [call site] 00041
5 __errno_location [call site] 00042
5 git_str_oom [function] [call site] 00043
5 set_error_from_buffer [function] [call site] 00044
6 git_threadstate_get [function] [call site] 00045
3 git_error_set [function] [call site] 00046
3 git_atomic32_inc [function] [call site] 00047
3 patch_parsed__free [function] [call site] 00048
4 git_patch_parse_ctx_free [function] [call site] 00049
5 git_atomic32_dec [function] [call site] 00050
5 patch_parse_ctx_free [function] [call site] 00051
6 git_parse_ctx_clear [function] [call site] 00052
3 parse_patch_header [function] [call site] 00053
4 git_parse_ctx_contains [function] [call site] 00054
5 memcmp [call site] 00055
4 parse_hunk_header [function] [call site] 00056
5 git_parse_advance_expected [function] [call site] 00057
6 memcmp [call site] 00058
6 git_parse_advance_chars [function] [call site] 00059
5 parse_int [function] [call site] 00060
6 git_parse_advance_digit [function] [call site] 00061
7 git__isdigit [function] [call site] 00062
7 git__strntol64 [function] [call site] 00063
8 git__isspace [function] [call site] 00064
8 git_error_set [function] [call site] 00065
8 git_error_set [function] [call site] 00066
7 git_parse_advance_chars [function] [call site] 00067
6 git__is_int [function] [call site] 00068
5 git_parse_peek [function] [call site] 00069
6 git__isspace [function] [call site] 00070
5 git_parse_advance_expected [function] [call site] 00071
5 parse_int [function] [call site] 00072
5 git_parse_advance_expected [function] [call site] 00073
5 parse_int [function] [call site] 00074
5 git_parse_peek [function] [call site] 00075
5 git_parse_advance_expected [function] [call site] 00076
5 parse_int [function] [call site] 00077
5 git_parse_advance_expected [function] [call site] 00078
5 git_parse_advance_line [function] [call site] 00079
6 git__linenlen [function] [call site] 00080
5 git_parse_err [function] [call site] 00081
6 git_error_vset [function] [call site] 00082
5 git_error_set [function] [call site] 00083
4 git_error_clear [function] [call site] 00084
5 git_threadstate_get [function] [call site] 00085
5 set_error [function] [call site] 00086
6 git_threadstate_get [function] [call site] 00087
6 git_str_clear [function] [call site] 00088
6 git_str_puts [function] [call site] 00089
6 set_error_from_buffer [function] [call site] 00090
5 __errno_location [call site] 00091
4 git_parse_err [function] [call site] 00092
4 git_parse_ctx_contains [function] [call site] 00093
4 parse_header_git [function] [call site] 00094
5 strlen [call site] 00095
5 git__prefixcmp [function] [call site] 00096
5 git_parse_advance_chars [function] [call site] 00097
5 git_parse_advance_ws [function] [call site] 00098
6 git__isspace [function] [call site] 00099
5 git_parse_advance_expected [function] [call site] 00100
5 git_parse_err [function] [call site] 00101
5 git_parse_err [function] [call site] 00102
5 git_parse_advance_line [function] [call site] 00103
5 git_parse_err [function] [call site] 00104
4 git_parse_advance_line [function] [call site] 00105
4 git_error_set [function] [call site] 00106
3 parse_patch_body [function] [call site] 00107
4 git_parse_ctx_contains [function] [call site] 00108
4 parse_patch_binary [function] [call site] 00109
5 git_parse_advance_expected [function] [call site] 00110
5 git_parse_advance_nl [function] [call site] 00111
6 git_parse_advance_line [function] [call site] 00112
5 git_parse_err [function] [call site] 00113
5 parse_patch_binary_side [function] [call site] 00114
6 git_parse_ctx_contains [function] [call site] 00115
6 git_parse_advance_chars [function] [call site] 00116
6 git_parse_ctx_contains [function] [call site] 00117
6 git_parse_advance_chars [function] [call site] 00118
6 git_parse_err [function] [call site] 00119
6 git_parse_advance_digit [function] [call site] 00120
6 git_parse_advance_nl [function] [call site] 00121
6 git_parse_err [function] [call site] 00122
6 git_parse_peek [function] [call site] 00123
6 git_parse_err [function] [call site] 00124
6 git_parse_advance_chars [function] [call site] 00125
6 git_parse_err [function] [call site] 00126
6 git_str_decode_base85 [function] [call site] 00127
7 git_error_set [function] [call site] 00128
7 git_error_set_oom [function] [call site] 00129
7 git_error_set_oom [function] [call site] 00130
7 git_str_grow [function] [call site] 00131
7 git_error_set [function] [call site] 00132
6 git_parse_err [function] [call site] 00133
6 git_parse_advance_chars [function] [call site] 00134
6 git_parse_advance_nl [function] [call site] 00135
6 git_parse_err [function] [call site] 00136
6 git_str_detach [function] [call site] 00137
7 git_str_init [function] [call site] 00138
6 git_str_dispose [function] [call site] 00139
7 git_str_init [function] [call site] 00140
6 git_str_dispose [function] [call site] 00141
5 git_parse_advance_nl [function] [call site] 00142
5 git_parse_err [function] [call site] 00143
5 parse_patch_binary_side [function] [call site] 00144
5 git_parse_advance_nl [function] [call site] 00145
5 git_parse_err [function] [call site] 00146
4 git_parse_ctx_contains [function] [call site] 00147
4 parse_patch_binary_nodata [function] [call site] 00148
5 git_parse_err [function] [call site] 00149
5 git_parse_advance_expected [function] [call site] 00150
5 strlen [call site] 00151
5 git_parse_advance_expected [function] [call site] 00152
5 git_parse_advance_expected [function] [call site] 00153
5 strlen [call site] 00154
5 git_parse_advance_expected [function] [call site] 00155
5 git_parse_advance_expected [function] [call site] 00156
5 git_parse_advance_nl [function] [call site] 00157
5 git_parse_err [function] [call site] 00158
4 parse_patch_hunks [function] [call site] 00159
5 git_parse_ctx_contains [function] [call site] 00160
5 git_array_grow [function] [call site] 00161
6 git_error_set_oom [function] [call site] 00162
5 parse_hunk_header [function] [call site] 00163
5 parse_hunk_body [function] [call site] 00164
6 git_parse_ctx_contains [function] [call site] 00165
6 git_parse_err [function] [call site] 00166
6 git_parse_err [function] [call site] 00167
6 git_parse_peek [function] [call site] 00168
6 eof_for_origin [function] [call site] 00169
6 git_parse_err [function] [call site] 00170
6 git_array_grow [function] [call site] 00171
6 git_parse_advance_line [function] [call site] 00172
6 git_parse_err [function] [call site] 00173
6 git_parse_ctx_contains [function] [call site] 00174
6 git_parse_err [function] [call site] 00175
6 git_array_grow [function] [call site] 00176
6 eof_for_origin [function] [call site] 00177
6 git_parse_advance_line [function] [call site] 00178
3 check_patch [function] [call site] 00179
4 check_filenames [function] [call site] 00180
5 git_parse_err [function] [call site] 00181
5 git_parse_err [function] [call site] 00182
5 check_header_names [function] [call site] 00183
6 strcmp [call site] 00184
6 git_parse_err [function] [call site] 00185
6 strcmp [call site] 00186
6 git_parse_err [function] [call site] 00187
5 check_header_names [function] [call site] 00188
5 check_prefix [function] [call site] 00189
6 git_parse_err [function] [call site] 00190
5 check_prefix [function] [call site] 00191
5 git_parse_err [function] [call site] 00192
4 git_parse_err [function] [call site] 00193
4 git_oid_clear [function] [call site] 00194
5 git_oid_size [function] [call site] 00195
4 git_oid_clear [function] [call site] 00196
3 git_atomic32_inc [function] [call site] 00197
3 patch_parsed__free [function] [call site] 00198
2 git_patch_parse_ctx_free [function] [call site] 00199
1 git_patch_free [function] [call site] 00200
2 git_atomic32_dec [function] [call site] 00201
2 git_patch__free [function] [call site] 00202