Fuzz introspector: pcre2_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
12 2483 5 :

['_pcre2_is_newline_8', 'memchr', '_pcre2_valid_utf_8', '_pcre2_was_newline_8', 'match']

12 2483 pcre2_match_8 call site: 00193 /src/pcre2/src/pcre2_match.c:6699
2 2 1 :

['_pcre2_strlen_8']

14 2485 pcre2_match_8 call site: 00191 /src/pcre2/src/pcre2_match.c:6401
2 2 1 :

['_pcre2_strlen_8']

14 1623 pcre2_dfa_match_8 call site: 00241 /src/pcre2/src/pcre2_dfa_match.c:3363
2 2 1 :

['_pcre2_strlen_8']

2 2336 pcre2_compile_8 call site: 00004 /src/pcre2/src/pcre2_compile.c:10008
0 1057 12 :

['manage_callouts', 'read_name', '_pcre2_strncmp_8', 'get_ucp', 'check_posix_syntax', '_pcre2_check_escape_8', 'check_posix_name', 'read_number', 'read_repeat_counts', '_pcre2_is_newline_8', '_pcre2_strncmp_c8_8', 'handle_escdsw']

0 1057 parse_regex call site: 00021 /src/pcre2/src/pcre2_compile.c:3108
0 1057 12 :

['manage_callouts', 'read_name', '_pcre2_strncmp_8', 'get_ucp', 'check_posix_syntax', '_pcre2_check_escape_8', 'check_posix_name', 'read_number', 'read_repeat_counts', '_pcre2_is_newline_8', '_pcre2_strncmp_c8_8', 'handle_escdsw']

0 1057 parse_regex call site: 00044 /src/pcre2/src/pcre2_compile.c:3663
0 6 1 :

['pcre2_code_free_8']

0 6 pcre2_compile_8 call site: 00146 /src/pcre2/src/pcre2_compile.c:10718
0 0 None 12 2483 pcre2_match_8 call site: 00192 /src/pcre2/src/pcre2_match.c:6476
0 0 None 12 2483 pcre2_match_8 call site: 00192 /src/pcre2/src/pcre2_match.c:6626
0 0 None 12 2453 pcre2_match_8 call site: 00193 /src/pcre2/src/pcre2_match.c:6731
0 0 None 12 2453 pcre2_match_8 call site: 00193 /src/pcre2/src/pcre2_match.c:6852
0 0 None 12 2453 pcre2_match_8 call site: 00203 /src/pcre2/src/pcre2_match.c:7284

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 srand [call site] 00001
1 rand [call site] 00002
1 rand [call site] 00003
1 pcre2_compile_8 [function] [call site] 00004
2 _pcre2_strlen_8 [function] [call site] 00005
2 _pcre2_strncmp_c8_8 [function] [call site] 00006
2 _pcre2_valid_utf_8 [function] [call site] 00007
2 parse_regex [function] [call site] 00008
3 manage_callouts [function] [call site] 00009
3 manage_callouts [function] [call site] 00010
3 _pcre2_check_escape_8 [function] [call site] 00011
4 read_repeat_counts [function] [call site] 00012
5 read_number [function] [call site] 00013
5 read_number [function] [call site] 00014
4 read_number [function] [call site] 00015
4 read_number [function] [call site] 00016
4 read_number [function] [call site] 00017
3 _pcre2_is_newline_8 [function] [call site] 00018
3 read_repeat_counts [function] [call site] 00019
3 manage_callouts [function] [call site] 00020
3 _pcre2_check_escape_8 [function] [call site] 00021
3 handle_escdsw [function] [call site] 00022
3 get_ucp [function] [call site] 00023
4 __ctype_b_loc [call site] 00024
4 tolower [call site] 00025
4 tolower [call site] 00026
4 _pcre2_strcmp_c8_8 [function] [call site] 00027
4 _pcre2_strcmp_c8_8 [function] [call site] 00028
4 _pcre2_strcmp_c8_8 [function] [call site] 00029
4 _pcre2_strcmp_c8_8 [function] [call site] 00030
4 _pcre2_strcmp_c8_8 [function] [call site] 00031
4 _pcre2_strcmp_c8_8 [function] [call site] 00032
4 _pcre2_strcmp_c8_8 [function] [call site] 00033
3 read_number [function] [call site] 00034
3 read_name [function] [call site] 00035
3 read_repeat_counts [function] [call site] 00036
3 _pcre2_strncmp_c8_8 [function] [call site] 00037
3 _pcre2_strncmp_c8_8 [function] [call site] 00038
3 check_posix_syntax [function] [call site] 00039
3 _pcre2_strncmp_c8_8 [function] [call site] 00040
3 check_posix_syntax [function] [call site] 00041
3 check_posix_name [function] [call site] 00042
4 _pcre2_strncmp_c8_8 [function] [call site] 00043
3 _pcre2_check_escape_8 [function] [call site] 00044
3 handle_escdsw [function] [call site] 00045
3 read_name [function] [call site] 00047
3 _pcre2_strncmp_c8_8 [function] [call site] 00048
3 read_name [function] [call site] 00049
3 _pcre2_strncmp_c8_8 [function] [call site] 00050
3 read_name [function] [call site] 00051
3 read_number [function] [call site] 00052
3 read_name [function] [call site] 00053
3 read_number [function] [call site] 00054
3 _pcre2_strncmp_c8_8 [function] [call site] 00055
3 read_number [function] [call site] 00056
3 read_name [function] [call site] 00057
3 _pcre2_strncmp_c8_8 [function] [call site] 00058
3 read_name [function] [call site] 00059
3 _pcre2_strncmp_8 [function] [call site] 00060
3 manage_callouts [function] [call site] 00061
2 check_lookbehinds [function] [call site] 00062
3 set_lookbehind_lengths [function] [call site] 00063
4 get_branchlength [function] [call site] 00064
5 parsed_skip [function] [call site] 00065
5 parsed_skip [function] [call site] 00066
5 check_lookbehinds [function] [call site] 00067
5 set_lookbehind_lengths [function] [call site] 00068
5 _pcre2_strncmp_8 [function] [call site] 00069
5 parsed_skip [function] [call site] 00070
5 get_grouplength [function] [call site] 00071
6 parsed_skip [function] [call site] 00072
6 get_branchlength [function] [call site] 00073
7 parsed_skip [function] [call site] 00074
7 get_grouplength [function] [call site] 00075
2 compile_regex [function] [call site] 00076
3 compile_branch [function] [call site] 00077
4 _pcre2_ord2utf_8 [function] [call site] 00078
4 add_list_to_class [function] [call site] 00079
5 add_to_class_internal [function] [call site] 00080
6 get_othercase_range [function] [call site] 00081
6 add_list_to_class_internal [function] [call site] 00082
7 add_to_class_internal [function] [call site] 00083
8 add_to_class_internal [function] [call site] 00084
9 _pcre2_ord2utf_8 [function] [call site] 00085
9 _pcre2_ord2utf_8 [function] [call site] 00086
9 _pcre2_ord2utf_8 [function] [call site] 00087
4 add_not_list_to_class [function] [call site] 00088
5 add_to_class [function] [call site] 00089
6 add_to_class_internal [function] [call site] 00090
5 add_to_class [function] [call site] 00091
4 add_list_to_class [function] [call site] 00092
4 add_not_list_to_class [function] [call site] 00093
4 add_to_class [function] [call site] 00094
4 add_to_class [function] [call site] 00095
4 _pcre2_ord2utf_8 [function] [call site] 00096
4 _pcre2_ord2utf_8 [function] [call site] 00097
4 _pcre2_ord2utf_8 [function] [call site] 00098
4 _pcre2_strncmp_8 [function] [call site] 00099
4 find_dupname_details [function] [call site] 00100
5 _pcre2_strncmp_8 [function] [call site] 00101
5 _pcre2_strncmp_8 [function] [call site] 00102
4 compile_regex [function] [call site] 00103
4 _pcre2_strncmp_8 [function] [call site] 00104
4 find_dupname_details [function] [call site] 00105
4 _pcre2_ckd_smul [function] [call site] 00106
4 _pcre2_ckd_smul [function] [call site] 00107
4 _pcre2_ckd_smul [function] [call site] 00108
4 _pcre2_ord2utf_8 [function] [call site] 00109
2 add_name_to_table [function] [call site] 00110
3 memcmp [call site] 00111
2 compile_regex [function] [call site] 00112
2 find_recurse [function] [call site] 00113
2 _pcre2_find_bracket_8 [function] [call site] 00114
2 find_recurse [function] [call site] 00115
2 _pcre2_auto_possessify_8 [function] [call site] 00116
3 get_repeat_base [function] [call site] 00117
3 get_chr_property_list [function] [call site] 00118
4 get_repeat_base [function] [call site] 00119
3 compare_opcodes [function] [call site] 00120
4 compare_opcodes [function] [call site] 00121
5 compare_opcodes [function] [call site] 00122
6 get_chr_property_list [function] [call site] 00123
6 check_char_prop [function] [call site] 00124
6 _pcre2_xclass_8 [function] [call site] 00125
3 get_chr_property_list [function] [call site] 00126
3 compare_opcodes [function] [call site] 00127
2 is_anchored [function] [call site] 00128
3 first_significant_code [function] [call site] 00129
3 is_anchored [function] [call site] 00130
4 is_anchored [function] [call site] 00131
5 is_anchored [function] [call site] 00132
6 is_anchored [function] [call site] 00133
7 is_anchored [function] [call site] 00134
2 find_firstassertedcu [function] [call site] 00135
3 first_significant_code [function] [call site] 00136
3 find_firstassertedcu [function] [call site] 00137
2 is_startline [function] [call site] 00138
3 first_significant_code [function] [call site] 00139
3 is_startline [function] [call site] 00140
4 first_significant_code [function] [call site] 00141
4 is_startline [function] [call site] 00142
5 is_startline [function] [call site] 00143
6 is_startline [function] [call site] 00144
7 is_startline [function] [call site] 00145
2 _pcre2_study_8 [function] [call site] 00146
3 set_start_bits [function] [call site] 00147
4 _pcre2_ord2utf_8 [function] [call site] 00148
4 set_start_bits [function] [call site] 00149
5 set_start_bits [function] [call site] 00150
6 set_table_bit [function] [call site] 00151
7 _pcre2_ord2utf_8 [function] [call site] 00152
6 set_table_bit [function] [call site] 00153
6 set_table_bit [function] [call site] 00154
6 set_table_bit [function] [call site] 00155
6 set_table_bit [function] [call site] 00156
6 set_table_bit [function] [call site] 00157
6 set_nottype_bits [function] [call site] 00158
6 set_type_bits [function] [call site] 00159
7 _pcre2_ord2utf_8 [function] [call site] 00160
6 set_nottype_bits [function] [call site] 00161
6 set_type_bits [function] [call site] 00162
6 set_nottype_bits [function] [call site] 00163
6 set_type_bits [function] [call site] 00164
6 set_nottype_bits [function] [call site] 00165
6 set_type_bits [function] [call site] 00166
6 set_nottype_bits [function] [call site] 00167
6 set_type_bits [function] [call site] 00168
6 set_nottype_bits [function] [call site] 00169
6 set_type_bits [function] [call site] 00170
3 find_minlength [function] [call site] 00171
4 find_minlength [function] [call site] 00172
5 find_minlength [function] [call site] 00173
6 _pcre2_find_bracket_8 [function] [call site] 00174
6 _pcre2_find_bracket_8 [function] [call site] 00175
6 find_minlength [function] [call site] 00176
7 _pcre2_find_bracket_8 [function] [call site] 00177
7 _pcre2_find_bracket_8 [function] [call site] 00178
7 find_minlength [function] [call site] 00179
8 find_minlength [function] [call site] 00180
2 pcre2_code_free_8 [function] [call site] 00181
1 pcre2_match_data_create_8 [function] [call site] 00182
2 _pcre2_memctl_malloc_8 [function] [call site] 00183
3 default_malloc [function] [call site] 00184
3 default_free [function] [call site] 00185
1 pcre2_match_context_create_8 [function] [call site] 00186
2 _pcre2_memctl_malloc_8 [function] [call site] 00187
1 pcre2_set_depth_limit_8 [function] [call site] 00188
1 pcre2_set_callout_8 [function] [call site] 00189
1 callout_function [function] [call site] 00190
1 pcre2_match_8 [function] [call site] 00191
2 _pcre2_strlen_8 [function] [call site] 00192
2 _pcre2_valid_utf_8 [function] [call site] 00193
2 _pcre2_is_newline_8 [function] [call site] 00194
2 _pcre2_is_newline_8 [function] [call site] 00195
2 memchr [call site] 00196
2 memchr [call site] 00197
2 memchr [call site] 00198
2 _pcre2_was_newline_8 [function] [call site] 00199
2 _pcre2_was_newline_8 [function] [call site] 00200
2 memchr [call site] 00201
2 memchr [call site] 00202
2 memchr [call site] 00203
2 match [function] [call site] 00204
3 _pcre2_is_newline_8 [function] [call site] 00205
3 _pcre2_ord2utf_8 [function] [call site] 00206
3 memcmp [call site] 00207
3 memcmp [call site] 00208
3 memcmp [call site] 00209
3 memcmp [call site] 00210
3 memcmp [call site] 00211
3 memcmp [call site] 00212
3 _pcre2_xclass_8 [function] [call site] 00213
3 _pcre2_xclass_8 [function] [call site] 00214
3 _pcre2_xclass_8 [function] [call site] 00215
3 _pcre2_extuni_8 [function] [call site] 00216
3 _pcre2_extuni_8 [function] [call site] 00217
3 _pcre2_is_newline_8 [function] [call site] 00218
3 _pcre2_is_newline_8 [function] [call site] 00219
3 _pcre2_extuni_8 [function] [call site] 00220
3 _pcre2_is_newline_8 [function] [call site] 00221
3 _pcre2_is_newline_8 [function] [call site] 00222
3 _pcre2_extuni_8 [function] [call site] 00223
3 _pcre2_is_newline_8 [function] [call site] 00224
3 _pcre2_is_newline_8 [function] [call site] 00225
3 match_ref [function] [call site] 00226
4 memcmp [call site] 00227
3 match_ref [function] [call site] 00228
3 match_ref [function] [call site] 00229
3 match_ref [function] [call site] 00230
3 match_ref [function] [call site] 00231
3 do_callout [function] [call site] 00232
3 do_callout [function] [call site] 00233
3 _pcre2_script_run_8 [function] [call site] 00234
3 _pcre2_is_newline_8 [function] [call site] 00235
3 _pcre2_was_newline_8 [function] [call site] 00236
3 _pcre2_is_newline_8 [function] [call site] 00237
3 _pcre2_strcmp_8 [function] [call site] 00238
2 _pcre2_is_newline_8 [function] [call site] 00239
2 _pcre2_valid_utf_8 [function] [call site] 00240
1 pcre2_dfa_match_8 [function] [call site] 00241
2 _pcre2_strlen_8 [function] [call site] 00242
2 _pcre2_valid_utf_8 [function] [call site] 00243
2 _pcre2_is_newline_8 [function] [call site] 00244
2 _pcre2_is_newline_8 [function] [call site] 00245
2 memchr [call site] 00246
2 memchr [call site] 00247
2 memchr [call site] 00248
2 _pcre2_was_newline_8 [function] [call site] 00249
2 _pcre2_was_newline_8 [function] [call site] 00250
2 memchr [call site] 00251
2 memchr [call site] 00252
2 memchr [call site] 00253
2 internal_dfa_match [function] [call site] 00254
3 _pcre2_was_newline_8 [function] [call site] 00255
3 _pcre2_is_newline_8 [function] [call site] 00256
3 _pcre2_is_newline_8 [function] [call site] 00257
3 _pcre2_is_newline_8 [function] [call site] 00258
3 _pcre2_is_newline_8 [function] [call site] 00259
3 _pcre2_is_newline_8 [function] [call site] 00260
3 _pcre2_is_newline_8 [function] [call site] 00261
3 _pcre2_is_newline_8 [function] [call site] 00262
3 _pcre2_is_newline_8 [function] [call site] 00263
3 _pcre2_is_newline_8 [function] [call site] 00264
3 _pcre2_is_newline_8 [function] [call site] 00265
3 _pcre2_extuni_8 [function] [call site] 00266
3 _pcre2_extuni_8 [function] [call site] 00267
3 _pcre2_extuni_8 [function] [call site] 00268
3 _pcre2_extuni_8 [function] [call site] 00269
3 _pcre2_xclass_8 [function] [call site] 00270
3 more_workspace [function] [call site] 00271
3 internal_dfa_match [function] [call site] 00272
4 do_callout_dfa [function] [call site] 00273
4 more_workspace [function] [call site] 00274
4 internal_dfa_match [function] [call site] 00275
5 more_workspace [function] [call site] 00276
5 internal_dfa_match [function] [call site] 00277
6 more_workspace [function] [call site] 00278
6 internal_dfa_match [function] [call site] 00279
7 more_workspace [function] [call site] 00280
7 internal_dfa_match [function] [call site] 00281
8 do_callout_dfa [function] [call site] 00282
2 _pcre2_is_newline_8 [function] [call site] 00283
1 pcre2_code_free_8 [function] [call site] 00284
1 pcre2_get_error_message_8 [function] [call site] 00285
1 strstr [call site] 00286
1 pcre2_match_data_free_8 [function] [call site] 00287
1 pcre2_match_context_free_8 [function] [call site] 00288