Fuzz introspector: libpsl_idn2_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
71 71 3 :

['psl_idna_open', 'psl_idna_toASCII', 'psl_idna_close']

105 187 is_public_suffix call site: 00004 /src/libpsl/src/psl.c:861
24 24 2 :

['vector_get', 'vector_find']

28 28 is_public_suffix call site: 00248 /src/libpsl/src/psl.c:880
6 6 2 :

['malloc', '__errno_location']

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

['__errno_location']

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

['malloc', 'realloc']

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

['abort']

2 2 u8_normalize call site: 00071 /src/libunistring/lib/uninorm/u-normalize-internal.h:362
0 0 None 36 132 u8_normalize call site: 00042 /src/libunistring/lib/uninorm/u-normalize-internal.h:37
0 0 None 36 132 u8_normalize call site: 00057 /src/libunistring/lib/uninorm/u-normalize-internal.h:254
0 0 None 34 355 libunistring_u8_casemap call site: 00010 /src/libunistring/lib/unicase/u-casemap.h:42
0 0 None 34 355 libunistring_u8_casemap call site: 00015 /src/libunistring/lib/unicase/u-casemap.h:125
0 0 None 34 355 libunistring_u8_casemap call site: 00028 /src/libunistring/lib/unicase/u-casemap.h:238
0 0 None 34 355 libunistring_u8_casemap call site: 00028 /src/libunistring/lib/unicase/u-casemap.h:248

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 __assert_fail [call site] 00001
1 psl_builtin [function] [call site] 00002
1 psl_is_public_suffix [function] [call site] 00003
2 is_public_suffix [function] [call site] 00004
3 psl_idna_open [function] [call site] 00005
3 psl_idna_toASCII [function] [call site] 00006
4 u8_strlen [function] [call site] 00007
5 strlen [call site] 00008
4 u8_tolower [function] [call site] 00009
5 libunistring_u8_casemap [function] [call site] 00010
6 u8_mbtouc_unsafe [function] [call site] 00011
6 libunistring_gl_unicase_special_lookup [function] [call site] 00012
7 gl_unicase_special_hash [function] [call site] 00013
7 memcmp [call site] 00014
6 libunistring_uc_is_cased [function] [call site] 00015
7 bitmap_lookup [function] [call site] 00016
6 u8_mbtouc_unsafe [function] [call site] 00017
6 libunistring_uc_is_case_ignorable [function] [call site] 00018
7 bitmap_lookup [function] [call site] 00019
6 libunistring_uc_is_cased [function] [call site] 00020
6 libunistring_uc_is_cased [function] [call site] 00021
6 uc_is_property_soft_dotted [function] [call site] 00022
7 bitmap_lookup [function] [call site] 00023
6 u8_mbtouc_unsafe [function] [call site] 00024
6 uc_combining_class [function] [call site] 00025
6 u8_mbtouc_unsafe [function] [call site] 00026
6 uc_combining_class [function] [call site] 00027
6 abort [call site] 00028
6 u8_uctomb [function] [call site] 00029
6 __errno_location [call site] 00030
6 abort [call site] 00031
6 __errno_location [call site] 00032
6 __errno_location [call site] 00033
6 realloc [call site] 00035
6 __errno_location [call site] 00036
6 u8_uctomb [function] [call site] 00037
6 __errno_location [call site] 00038
6 abort [call site] 00039
6 libunistring_uc_is_case_ignorable [function] [call site] 00040
6 uc_combining_class [function] [call site] 00041
6 u8_normalize [function] [call site] 00042
7 u8_mbtouc_unsafe [function] [call site] 00043
7 abort [call site] 00044
7 abort [call site] 00045
7 uc_combining_class [function] [call site] 00046
7 libunistring_gl_uninorm_decompose_merge_sort_inplace [function] [call site] 00047
8 libunistring_gl_uninorm_decompose_merge_sort_inplace [function] [call site] 00048
9 gl_uninorm_decompose_merge_sort_fromto [function] [call site] 00049
10 gl_uninorm_decompose_merge_sort_fromto [function] [call site] 00050
11 gl_uninorm_decompose_merge_sort_fromto [function] [call site] 00051
7 u8_uctomb [function] [call site] 00054
7 __errno_location [call site] 00055
7 abort [call site] 00056
7 __errno_location [call site] 00057
7 __errno_location [call site] 00058
7 realloc [call site] 00060
7 __errno_location [call site] 00061
7 u8_uctomb [function] [call site] 00062
7 __errno_location [call site] 00063
7 abort [call site] 00064
7 abort [call site] 00065
7 __errno_location [call site] 00066
7 libunistring_rpl_free [function] [call site] 00067
8 __errno_location [call site] 00068
8 __errno_location [call site] 00069
7 __errno_location [call site] 00070
7 realloc [call site] 00071
7 abort [call site] 00072
7 libunistring_rpl_free [function] [call site] 00073
7 __errno_location [call site] 00074
7 libunistring_rpl_free [function] [call site] 00075
7 libunistring_rpl_free [function] [call site] 00076
7 __errno_location [call site] 00077
6 libunistring_rpl_free [function] [call site] 00078
6 __errno_location [call site] 00079
6 realloc [call site] 00080
6 __errno_location [call site] 00081
6 libunistring_rpl_free [function] [call site] 00082
6 __errno_location [call site] 00083
5 uc_tolower [function] [call site] 00084
4 idn2_lookup_u8 [function] [call site] 00085
5 set_default_flags [function] [call site] 00086
5 _tr46 [function] [call site] 00087
6 u8_strlen [function] [call site] 00088
6 u8_to_u32 [function] [call site] 00089
7 u8_mbtoucr [function] [call site] 00090
7 libunistring_rpl_free [function] [call site] 00091
7 __errno_location [call site] 00092
7 realloc [call site] 00093
7 libunistring_rpl_free [function] [call site] 00094
7 __errno_location [call site] 00095
7 __errno_location [call site] 00096
7 realloc [call site] 00097
6 __errno_location [call site] 00098
6 get_idna_map [function] [call site] 00099
7 bsearch [call site] 00100
7 _compare_idna_map [function] [call site] 00101
8 _fill_map [function] [call site] 00102
7 bsearch [call site] 00103
7 _compare_idna_map [function] [call site] 00104
7 bsearch [call site] 00105
7 _compare_idna_map [function] [call site] 00106
7 _fill_map [function] [call site] 00107
6 get_idna_map [function] [call site] 00118
6 get_map_data [function] [call site] 00121
6 get_map_data [function] [call site] 00125
6 get_map_data [function] [call site] 00128
6 u32_normalize [function] [call site] 00130
7 u32_mbtouc_unsafe [function] [call site] 00131
7 u32_uctomb [function] [call site] 00132
7 u32_uctomb [function] [call site] 00133
6 __errno_location [call site] 00135
6 u32_to_u8 [function] [call site] 00136
7 u8_uctomb [function] [call site] 00137
7 libunistring_rpl_free [function] [call site] 00138
7 __errno_location [call site] 00139
7 realloc [call site] 00140
7 libunistring_rpl_free [function] [call site] 00141
7 __errno_location [call site] 00142
7 u8_uctomb [function] [call site] 00143
7 abort [call site] 00144
7 __errno_location [call site] 00145
7 realloc [call site] 00146
6 __errno_location [call site] 00148
6 _idn2_punycode_decode_internal [function] [call site] 00149
6 _idn2_label_test [function] [call site] 00154
7 u32_normalize [function] [call site] 00155
7 __errno_location [call site] 00156
7 memcmp [call site] 00157
7 uc_is_general_category [function] [call site] 00159
8 bitmap_lookup [function] [call site] 00160
7 _idn2_disallowed_p [function] [call site] 00161
8 property [function] [call site] 00162
9 bsearch [call site] 00163
7 get_idna_map [function] [call site] 00165
7 _idn2_contextj_p [function] [call site] 00168
7 _idn2_contextj_rule [function] [call site] 00170
8 _idn2_contextj_p [function] [call site] 00171
8 uc_combining_class [function] [call site] 00172
8 uc_joining_type [function] [call site] 00173
9 uc_is_general_category_withtable [function] [call site] 00174
10 lookup_withtable [function] [call site] 00175
8 uc_joining_type [function] [call site] 00176
8 uc_combining_class [function] [call site] 00177
7 _idn2_contexto_p [function] [call site] 00178
7 _idn2_contexto_p [function] [call site] 00180
7 _idn2_contexto_with_rule [function] [call site] 00181
7 _idn2_contexto_rule [function] [call site] 00182
8 _idn2_contexto_p [function] [call site] 00183
8 _uc_script_name [function] [call site] 00184
9 uc_script [function] [call site] 00185
8 strcmp [call site] 00186
8 _uc_script_name [function] [call site] 00187
8 strcmp [call site] 00188
8 _uc_script_name [function] [call site] 00189
8 strcmp [call site] 00190
8 _uc_script_name [function] [call site] 00191
8 strcmp [call site] 00192
8 _uc_script_name [function] [call site] 00193
8 strcmp [call site] 00194
7 _idn2_unassigned_p [function] [call site] 00195
7 _idn2_bidi [function] [call site] 00197
8 _isBidi [function] [call site] 00198
9 uc_bidi_category [function] [call site] 00199
10 uc_bidi_class [function] [call site] 00200
8 uc_bidi_category [function] [call site] 00201
8 uc_bidi_category [function] [call site] 00202
8 uc_bidi_category [function] [call site] 00203
7 get_idna_map [function] [call site] 00204
6 _idn2_label_test [function] [call site] 00209
6 u32_to_u8 [function] [call site] 00210
6 __errno_location [call site] 00212
5 strchrnul [call site] 00214
5 label [function] [call site] 00215
6 _idn2_ascii_p [function] [call site] 00216
6 memcmp [call site] 00217
6 _idn2_punycode_decode_internal [function] [call site] 00218
6 u32_to_u8 [function] [call site] 00219
6 _idn2_u8_to_u32_nfc [function] [call site] 00220
7 u8_to_u32 [function] [call site] 00221
7 __errno_location [call site] 00222
7 _isNFC [function] [call site] 00223
8 uc_combining_class [function] [call site] 00224
8 get_nfcqc_map [function] [call site] 00225
9 bsearch [call site] 00226
9 _compare_nfcqc_map [function] [call site] 00227
7 u32_normalize [function] [call site] 00228
7 __errno_location [call site] 00230
6 _idn2_label_test [function] [call site] 00231
6 _idn2_punycode_encode_internal [function] [call site] 00232
7 encode_digit [function] [call site] 00233
7 encode_digit [function] [call site] 00234
6 c_strncasecmp [function] [call site] 00236
6 _idn2_punycode_decode_internal [function] [call site] 00239
3 strlen [call site] 00247
3 psl_idna_close [function] [call site] 00248
3 LookupStringInFixedSet [function] [call site] 00249
4 GetNextOffset [function] [call site] 00250
4 IsMatch [function] [call site] 00252
5 IsMatchUnchecked [function] [call site] 00253
6 GetMultibyteLength [function] [call site] 00254
4 NextPos [function] [call site] 00255
5 GetMultibyteLength [function] [call site] 00256
5 GetMultibyteLength [function] [call site] 00257
4 GetReturnValue [function] [call site] 00261
4 IsEndCharMatch [function] [call site] 00262
5 IsMatchUnchecked [function] [call site] 00263
3 strchr [call site] 00265
3 strlen [call site] 00266
3 LookupStringInFixedSet [function] [call site] 00267
3 vector_get [function] [call site] 00268
3 vector_find [function] [call site] 00269
3 strchr [call site] 00270
3 strlen [call site] 00271
3 vector_find [function] [call site] 00272
1 psl_is_public_suffix2 [function] [call site] 00273
2 is_public_suffix [function] [call site] 00274
1 psl_is_public_suffix2 [function] [call site] 00275
1 psl_is_public_suffix2 [function] [call site] 00276
1 psl_is_public_suffix2 [function] [call site] 00277
1 psl_unregistrable_domain [function] [call site] 00278
2 strlen [call site] 00279
2 is_public_suffix [function] [call site] 00280
2 strchr [call site] 00281
1 psl_registrable_domain [function] [call site] 00282
2 strlen [call site] 00283
2 is_public_suffix [function] [call site] 00284
2 strchr [call site] 00285
1 psl_is_cookie_domain_acceptable [function] [call site] 00286
2 strcmp [call site] 00287
2 isip [function] [call site] 00288
3 inet_pton [call site] 00289
2 strlen [call site] 00290
2 strlen [call site] 00291
2 strcmp [call site] 00292
2 psl_unregistrable_domain [function] [call site] 00293
2 strlen [call site] 00294
1 psl_is_cookie_domain_acceptable [function] [call site] 00295
1 psl_str_to_utf8lower [function] [call site] 00296
2 str_is_ascii [function] [call site] 00297
2 strdup [call site] 00298
2 __ctype_b_loc [call site] 00299
2 tolower [call site] 00300
2 nl_langinfo [call site] 00301
2 strcasecmp [call site] 00302
2 iconv_open [call site] 00303
2 strlen [call site] 00304
2 iconv [call site] 00305
2 iconv [call site] 00306
2 u8_tolower [function] [call site] 00307
2 iconv_close [call site] 00308
2 u8_strlen [function] [call site] 00309
2 u8_tolower [function] [call site] 00310
1 psl_str_to_utf8lower [function] [call site] 00311
1 psl_str_to_utf8lower [function] [call site] 00312
1 psl_free [function] [call site] 00313
2 vector_free [function] [call site] 00314
1 psl_is_public_suffix [function] [call site] 00315
1 psl_check_version_number [function] [call site] 00316
1 psl_get_version [function] [call site] 00317
1 psl_dist_filename [function] [call site] 00318
1 psl_builtin_outdated [function] [call site] 00319
2 stat [call site] 00320
1 psl_builtin_filename [function] [call site] 00321
1 psl_builtin_sha1sum [function] [call site] 00322
1 psl_builtin_file_time [function] [call site] 00323