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 2506 5 :

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

12 2506 pcre2_match_8 call site: 00195 /src/pcre2/src/pcre2_match.c:6790
2 2 1 :

['_pcre2_strlen_8']

14 2508 pcre2_match_8 call site: 00193 /src/pcre2/src/pcre2_match.c:6492
2 2 1 :

['_pcre2_strlen_8']

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

['_pcre2_strlen_8']

2 2426 pcre2_compile_8 call site: 00004 /src/pcre2/src/pcre2_compile.c:10198
0 1376 12 :

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

0 1376 parse_regex call site: 00022 /src/pcre2/src/pcre2_compile.c:3200
0 1376 12 :

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

0 1376 parse_regex call site: 00045 /src/pcre2/src/pcre2_compile.c:3766
0 6 1 :

['pcre2_code_free_8']

0 6 pcre2_compile_8 call site: 00147 /src/pcre2/src/pcre2_compile.c:10906
0 0 None 12 2506 pcre2_match_8 call site: 00194 /src/pcre2/src/pcre2_match.c:6567
0 0 None 12 2506 pcre2_match_8 call site: 00194 /src/pcre2/src/pcre2_match.c:6717
0 0 None 12 2476 pcre2_match_8 call site: 00195 /src/pcre2/src/pcre2_match.c:6822
0 0 None 12 2476 pcre2_match_8 call site: 00195 /src/pcre2/src/pcre2_match.c:6942
0 0 None 12 2476 pcre2_match_8 call site: 00205 /src/pcre2/src/pcre2_match.c:7374

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