Fuzz introspector: libpsl_idn2_load_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
6 924 9 :

['map_is', 'malloc', 'u32_normalize', '_idn2_label_test', 'get_idna_map', 'get_map_data', '_idn2_punycode_decode_internal', 'u32_to_u8', '__errno_location']

6 964 _tr46 call site: 00128 /src/libidn2/lib/lookup.c:292
6 6 2 :

['malloc', '__errno_location']

8 20 u8_normalize call site: 00087 /src/libunistring/lib/uninorm/u-normalize-internal.h:339
6 6 1 :

['__errno_location']

6 14 u32_normalize call site: 00153 /src/libunistring/lib/uninorm/u-normalize-internal.h:345
4 4 1 :

['__errno_location']

4 8 libunistring_u8_casemap call site: 00063 /src/libunistring/lib/unicase/u-casemap.h:383
2 2 2 :

['malloc', 'realloc']

8 12 libunistring_u8_casemap call site: 00062 /src/libunistring/lib/unicase/u-casemap.h:377
2 2 1 :

['__errno_location']

2 2 _idn2_label_test call site: 00175 /src/libidn2/lib/idna.c:144
2 2 1 :

['abort']

2 2 uc_canonical_decomposition call site: 00000 /src/libunistring/lib/uninorm/canonical-decomposition.c:88
2 2 1 :

['abort']

2 2 u32_normalize call site: 00153 /src/libunistring/lib/uninorm/u-normalize-internal.h:362
2 2 1 :

['abort']

2 2 u8_normalize call site: 00091 /src/libunistring/lib/uninorm/u-normalize-internal.h:362
2 2 1 :

['__errno_location']

2 2 u32_to_u8 call site: 00164 /src/libunistring/lib/unistr/u32-to-u8.c:111
2 2 2 :

['malloc', '__errno_location']

2 2 u8_to_u32 call site: 00115 /src/libunistring/lib/unistr/u8-to-u32.c:100
0 10 1 :

['_idn2_contextj_p']

43 215 _idn2_label_test call site: 00187 /src/libidn2/lib/idna.c:195

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 fmemopen [call site] 00001
1 psl_load_fp [function] [call site] 00002
2 calloc [call site] 00003
2 fgets [call site] 00004
2 strlen [call site] 00005
2 atoi [call site] 00006
2 fread [call site] 00007
2 realloc [call site] 00008
2 realloc [call site] 00009
2 GetUtfMode [function] [call site] 00010
2 psl_idna_open [function] [call site] 00011
2 vector_alloc [function] [call site] 00012
3 calloc [call site] 00013
2 isspace_ascii [function] [call site] 00014
2 strstr [call site] 00015
2 strstr [call site] 00016
2 strstr [call site] 00017
2 strstr [call site] 00018
2 isspace_ascii [function] [call site] 00019
2 suffix_init [function] [call site] 00020
2 vector_find [function] [call site] 00021
2 vector_get [function] [call site] 00022
2 vector_add [function] [call site] 00023
3 realloc [call site] 00024
2 add_punycode_if_needed [function] [call site] 00025
3 str_is_ascii [function] [call site] 00026
3 psl_idna_toASCII [function] [call site] 00027
4 u8_strlen [function] [call site] 00028
5 strlen [call site] 00029
4 u8_tolower [function] [call site] 00030
5 libunistring_u8_casemap [function] [call site] 00031
6 u8_mbtouc_unsafe [function] [call site] 00032
6 libunistring_gl_unicase_special_lookup [function] [call site] 00033
7 gl_unicase_special_hash [function] [call site] 00034
7 memcmp [call site] 00035
6 libunistring_uc_is_cased [function] [call site] 00036
7 bitmap_lookup [function] [call site] 00037
6 u8_mbtouc_unsafe [function] [call site] 00038
6 libunistring_uc_is_case_ignorable [function] [call site] 00039
7 bitmap_lookup [function] [call site] 00040
6 libunistring_uc_is_cased [function] [call site] 00041
6 libunistring_uc_is_cased [function] [call site] 00042
6 uc_is_property_soft_dotted [function] [call site] 00043
7 bitmap_lookup [function] [call site] 00044
6 u8_mbtouc_unsafe [function] [call site] 00045
6 uc_combining_class [function] [call site] 00046
6 u8_mbtouc_unsafe [function] [call site] 00047
6 uc_combining_class [function] [call site] 00048
6 abort [call site] 00049
6 u8_uctomb [function] [call site] 00050
6 __errno_location [call site] 00051
6 abort [call site] 00052
6 __errno_location [call site] 00053
6 __errno_location [call site] 00054
6 realloc [call site] 00056
6 __errno_location [call site] 00057
6 u8_uctomb [function] [call site] 00058
6 __errno_location [call site] 00059
6 abort [call site] 00060
6 libunistring_uc_is_case_ignorable [function] [call site] 00061
6 uc_combining_class [function] [call site] 00062
6 u8_normalize [function] [call site] 00063
7 u8_mbtouc_unsafe [function] [call site] 00064
7 abort [call site] 00065
7 abort [call site] 00066
7 uc_combining_class [function] [call site] 00067
7 libunistring_gl_uninorm_decompose_merge_sort_inplace [function] [call site] 00068
8 libunistring_gl_uninorm_decompose_merge_sort_inplace [function] [call site] 00069
9 gl_uninorm_decompose_merge_sort_fromto [function] [call site] 00070
10 gl_uninorm_decompose_merge_sort_fromto [function] [call site] 00071
11 gl_uninorm_decompose_merge_sort_fromto [function] [call site] 00072
7 u8_uctomb [function] [call site] 00075
7 __errno_location [call site] 00076
7 abort [call site] 00077
7 __errno_location [call site] 00078
7 realloc [call site] 00080
7 __errno_location [call site] 00081
7 u8_uctomb [function] [call site] 00082
7 __errno_location [call site] 00083
7 abort [call site] 00084
7 abort [call site] 00085
7 __errno_location [call site] 00086
7 libunistring_rpl_free [function] [call site] 00087
8 __errno_location [call site] 00088
8 __errno_location [call site] 00089
7 __errno_location [call site] 00090
7 realloc [call site] 00091
7 abort [call site] 00092
7 libunistring_rpl_free [function] [call site] 00093
7 __errno_location [call site] 00094
7 libunistring_rpl_free [function] [call site] 00095
7 libunistring_rpl_free [function] [call site] 00096
7 __errno_location [call site] 00097
6 libunistring_rpl_free [function] [call site] 00098
6 __errno_location [call site] 00099
6 realloc [call site] 00100
6 __errno_location [call site] 00101
6 libunistring_rpl_free [function] [call site] 00102
6 __errno_location [call site] 00103
5 uc_tolower [function] [call site] 00104
4 idn2_lookup_u8 [function] [call site] 00105
5 set_default_flags [function] [call site] 00106
5 _tr46 [function] [call site] 00107
6 u8_strlen [function] [call site] 00108
6 u8_to_u32 [function] [call site] 00109
7 u8_mbtoucr [function] [call site] 00110
7 libunistring_rpl_free [function] [call site] 00111
7 __errno_location [call site] 00112
7 realloc [call site] 00113
7 libunistring_rpl_free [function] [call site] 00114
7 __errno_location [call site] 00115
7 __errno_location [call site] 00116
7 realloc [call site] 00117
6 __errno_location [call site] 00118
6 get_idna_map [function] [call site] 00119
7 bsearch [call site] 00120
7 _compare_idna_map [function] [call site] 00121
8 _fill_map [function] [call site] 00122
7 bsearch [call site] 00123
7 _compare_idna_map [function] [call site] 00124
7 bsearch [call site] 00125
7 _compare_idna_map [function] [call site] 00126
7 _fill_map [function] [call site] 00127
6 get_idna_map [function] [call site] 00138
6 get_map_data [function] [call site] 00141
6 get_map_data [function] [call site] 00145
6 get_map_data [function] [call site] 00148
6 u32_normalize [function] [call site] 00150
7 u32_mbtouc_unsafe [function] [call site] 00151
7 u32_uctomb [function] [call site] 00152
7 u32_uctomb [function] [call site] 00153
6 __errno_location [call site] 00155
6 u32_to_u8 [function] [call site] 00156
7 u8_uctomb [function] [call site] 00157
7 libunistring_rpl_free [function] [call site] 00158
7 __errno_location [call site] 00159
7 realloc [call site] 00160
7 libunistring_rpl_free [function] [call site] 00161
7 __errno_location [call site] 00162
7 u8_uctomb [function] [call site] 00163
7 abort [call site] 00164
7 __errno_location [call site] 00165
7 realloc [call site] 00166
6 __errno_location [call site] 00168
6 _idn2_punycode_decode_internal [function] [call site] 00169
6 _idn2_label_test [function] [call site] 00174
7 u32_normalize [function] [call site] 00175
7 __errno_location [call site] 00176
7 memcmp [call site] 00177
7 uc_is_general_category [function] [call site] 00179
8 bitmap_lookup [function] [call site] 00180
7 _idn2_disallowed_p [function] [call site] 00181
8 property [function] [call site] 00182
9 bsearch [call site] 00183
7 get_idna_map [function] [call site] 00185
7 _idn2_contextj_p [function] [call site] 00188
7 _idn2_contextj_rule [function] [call site] 00190
8 _idn2_contextj_p [function] [call site] 00191
8 uc_combining_class [function] [call site] 00192
8 uc_joining_type [function] [call site] 00193
9 uc_is_general_category_withtable [function] [call site] 00194
10 lookup_withtable [function] [call site] 00195
8 uc_joining_type [function] [call site] 00196
8 uc_combining_class [function] [call site] 00197
7 _idn2_contexto_p [function] [call site] 00198
7 _idn2_contexto_p [function] [call site] 00200
7 _idn2_contexto_with_rule [function] [call site] 00201
7 _idn2_contexto_rule [function] [call site] 00202
8 _idn2_contexto_p [function] [call site] 00203
8 _uc_script_name [function] [call site] 00204
9 uc_script [function] [call site] 00205
8 strcmp [call site] 00206
8 _uc_script_name [function] [call site] 00207
8 strcmp [call site] 00208
8 _uc_script_name [function] [call site] 00209
8 strcmp [call site] 00210
8 _uc_script_name [function] [call site] 00211
8 strcmp [call site] 00212
8 _uc_script_name [function] [call site] 00213
8 strcmp [call site] 00214
7 _idn2_unassigned_p [function] [call site] 00215
7 _idn2_bidi [function] [call site] 00217
8 _isBidi [function] [call site] 00218
9 uc_bidi_category [function] [call site] 00219
10 uc_bidi_class [function] [call site] 00220
8 uc_bidi_category [function] [call site] 00221
8 uc_bidi_category [function] [call site] 00222
8 uc_bidi_category [function] [call site] 00223
7 get_idna_map [function] [call site] 00224
6 _idn2_label_test [function] [call site] 00229
6 u32_to_u8 [function] [call site] 00230
6 __errno_location [call site] 00232
5 strchrnul [call site] 00234
5 label [function] [call site] 00235
6 _idn2_ascii_p [function] [call site] 00236
6 memcmp [call site] 00237
6 _idn2_punycode_decode_internal [function] [call site] 00238
6 u32_to_u8 [function] [call site] 00239
6 _idn2_u8_to_u32_nfc [function] [call site] 00240
7 u8_to_u32 [function] [call site] 00241
7 __errno_location [call site] 00242
7 _isNFC [function] [call site] 00243
8 uc_combining_class [function] [call site] 00244
8 get_nfcqc_map [function] [call site] 00245
9 bsearch [call site] 00246
9 _compare_nfcqc_map [function] [call site] 00247
7 u32_normalize [function] [call site] 00248
7 __errno_location [call site] 00250
6 _idn2_label_test [function] [call site] 00251
6 _idn2_punycode_encode_internal [function] [call site] 00252
7 encode_digit [function] [call site] 00253
7 encode_digit [function] [call site] 00254
6 c_strncasecmp [function] [call site] 00256
6 _idn2_punycode_decode_internal [function] [call site] 00259
3 strcmp [call site] 00267
3 strlen [call site] 00268
3 suffix_init [function] [call site] 00269
3 vector_add [function] [call site] 00270
2 fgets [call site] 00271
2 vector_sort [function] [call site] 00272
3 qsort [call site] 00273
2 psl_idna_close [function] [call site] 00274
2 psl_free [function] [call site] 00275
3 vector_free [function] [call site] 00276
1 psl_is_public_suffix [function] [call site] 00277
2 is_public_suffix [function] [call site] 00278
3 psl_idna_open [function] [call site] 00279
3 psl_idna_toASCII [function] [call site] 00280
3 strlen [call site] 00281
3 psl_idna_close [function] [call site] 00282
3 LookupStringInFixedSet [function] [call site] 00283
4 GetNextOffset [function] [call site] 00284
4 IsMatch [function] [call site] 00286
5 IsMatchUnchecked [function] [call site] 00287
6 GetMultibyteLength [function] [call site] 00288
4 NextPos [function] [call site] 00289
5 GetMultibyteLength [function] [call site] 00290
5 GetMultibyteLength [function] [call site] 00291
4 GetReturnValue [function] [call site] 00295
4 IsEndCharMatch [function] [call site] 00296
5 IsMatchUnchecked [function] [call site] 00297
3 strchr [call site] 00299
3 strlen [call site] 00300
3 LookupStringInFixedSet [function] [call site] 00301
3 vector_get [function] [call site] 00302
3 vector_find [function] [call site] 00303
3 strchr [call site] 00304
3 strlen [call site] 00305
3 vector_find [function] [call site] 00306
1 psl_is_public_suffix [function] [call site] 00307
1 fclose [call site] 00309
1 psl_load_file [function] [call site] 00310
2 fopen [call site] 00311
2 psl_load_fp [function] [call site] 00312
2 fclose [call site] 00313