Fuzz introspector: libpsl_idn_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: 00094 /src/libpsl/src/psl.c:880
6 6 2 :

['malloc', '__errno_location']

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

['__errno_location']

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

['malloc', 'realloc']

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

['abort']

2 2 u8_normalize call site: 00213 /src/libunistring/lib/uninorm/u-normalize-internal.h:362
0 0 None 36 132 u8_normalize call site: 00186 /src/libunistring/lib/uninorm/u-normalize-internal.h:37
0 0 None 36 132 u8_normalize call site: 00201 /src/libunistring/lib/uninorm/u-normalize-internal.h:254
0 0 None 34 355 libunistring_u8_casemap call site: 00154 /src/libunistring/lib/unicase/u-casemap.h:42
0 0 None 34 355 libunistring_u8_casemap call site: 00159 /src/libunistring/lib/unicase/u-casemap.h:125
0 0 None 34 355 libunistring_u8_casemap call site: 00172 /src/libunistring/lib/unicase/u-casemap.h:238
0 0 None 34 355 libunistring_u8_casemap call site: 00172 /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 utf8_is_valid [function] [call site] 00007
4 idna_to_ascii_8z [function] [call site] 00008
5 stringprep_utf8_to_ucs4 [function] [call site] 00009
6 strlen [call site] 00010
6 g_utf8_to_ucs4_fast [function] [call site] 00012
5 idna_to_ascii_4z [function] [call site] 00013
6 strcpy [call site] 00014
6 strcpy [call site] 00015
6 idna_to_ascii_4i [function] [call site] 00016
7 stringprep_ucs4_to_utf8 [function] [call site] 00017
8 g_ucs4_to_utf8 [function] [call site] 00018
9 g_unichar_to_utf8 [function] [call site] 00019
7 strlen [call site] 00020
7 realloc [call site] 00021
7 rpl_free [function] [call site] 00022
8 __errno_location [call site] 00023
8 __errno_location [call site] 00024
7 stringprep [function] [call site] 00025
8 strlen [call site] 00026
8 stringprep_utf8_to_ucs4 [function] [call site] 00028
8 realloc [call site] 00029
8 stringprep_4i [function] [call site] 00031
9 stringprep_ucs4_nfkc_normalize [function] [call site] 00032
10 stringprep_ucs4_to_utf8 [function] [call site] 00033
10 _g_utf8_normalize_wc [function] [call site] 00034
11 g_utf8_get_char [function] [call site] 00035
11 decompose_hangul [function] [call site] 00036
11 find_decomposition [function] [call site] 00037
11 g_utf8_strlen [function] [call site] 00038
11 g_utf8_get_char [function] [call site] 00039
11 decompose_hangul [function] [call site] 00040
11 find_decomposition [function] [call site] 00041
11 g_utf8_get_char [function] [call site] 00042
11 g_unicode_canonical_ordering [function] [call site] 00043
11 g_unicode_canonical_ordering [function] [call site] 00044
11 combine [function] [call site] 00045
12 combine_hangul [function] [call site] 00046
10 rpl_free [function] [call site] 00047
9 stringprep_find_string_in_table [function] [call site] 00050
10 stringprep_find_character_in_table [function] [call site] 00051
11 bsearch [call site] 00052
11 _compare_table_element [function] [call site] 00053
9 stringprep_find_string_in_table [function] [call site] 00054
9 stringprep_apply_table_to_string [function] [call site] 00055
10 stringprep_find_string_in_table [function] [call site] 00056
9 stringprep_find_string_in_table [function] [call site] 00057
9 stringprep_find_string_in_table [function] [call site] 00058
9 stringprep_find_string_in_table [function] [call site] 00059
9 stringprep_find_character_in_table [function] [call site] 00060
9 stringprep_find_character_in_table [function] [call site] 00061
8 stringprep_ucs4_to_utf8 [function] [call site] 00063
8 strlen [call site] 00065
8 strcpy [call site] 00067
7 stringprep [function] [call site] 00069
7 stringprep_utf8_to_ucs4 [function] [call site] 00071
7 punycode_encode [function] [call site] 00077
8 encode_basic [function] [call site] 00078
8 encode_digit [function] [call site] 00079
8 encode_digit [function] [call site] 00080
7 strlen [call site] 00084
6 strlen [call site] 00086
6 realloc [call site] 00087
6 strcat [call site] 00089
6 strcat [call site] 00090
6 strdup [call site] 00091
3 strlen [call site] 00093
3 psl_idna_close [function] [call site] 00094
3 LookupStringInFixedSet [function] [call site] 00095
4 GetNextOffset [function] [call site] 00096
4 IsMatch [function] [call site] 00098
5 IsMatchUnchecked [function] [call site] 00099
6 GetMultibyteLength [function] [call site] 00100
4 NextPos [function] [call site] 00101
5 GetMultibyteLength [function] [call site] 00102
5 GetMultibyteLength [function] [call site] 00103
4 GetReturnValue [function] [call site] 00107
4 IsEndCharMatch [function] [call site] 00108
5 IsMatchUnchecked [function] [call site] 00109
3 strchr [call site] 00111
3 strlen [call site] 00112
3 LookupStringInFixedSet [function] [call site] 00113
3 vector_get [function] [call site] 00114
3 vector_find [function] [call site] 00115
3 strchr [call site] 00116
3 strlen [call site] 00117
3 vector_find [function] [call site] 00118
1 psl_is_public_suffix2 [function] [call site] 00119
2 is_public_suffix [function] [call site] 00120
1 psl_is_public_suffix2 [function] [call site] 00121
1 psl_is_public_suffix2 [function] [call site] 00122
1 psl_is_public_suffix2 [function] [call site] 00123
1 psl_unregistrable_domain [function] [call site] 00124
2 strlen [call site] 00125
2 is_public_suffix [function] [call site] 00126
2 strchr [call site] 00127
1 psl_registrable_domain [function] [call site] 00128
2 strlen [call site] 00129
2 is_public_suffix [function] [call site] 00130
2 strchr [call site] 00131
1 psl_is_cookie_domain_acceptable [function] [call site] 00132
2 strcmp [call site] 00133
2 isip [function] [call site] 00134
3 inet_pton [call site] 00135
2 strlen [call site] 00136
2 strlen [call site] 00137
2 strcmp [call site] 00138
2 psl_unregistrable_domain [function] [call site] 00139
2 strlen [call site] 00140
1 psl_is_cookie_domain_acceptable [function] [call site] 00141
1 psl_str_to_utf8lower [function] [call site] 00142
2 str_is_ascii [function] [call site] 00143
2 strdup [call site] 00144
2 __ctype_b_loc [call site] 00145
2 tolower [call site] 00146
2 nl_langinfo [call site] 00147
2 strcasecmp [call site] 00148
2 iconv_open [call site] 00149
2 strlen [call site] 00150
2 iconv [call site] 00151
2 iconv [call site] 00152
2 u8_tolower [function] [call site] 00153
3 libunistring_u8_casemap [function] [call site] 00154
4 u8_mbtouc_unsafe [function] [call site] 00155
4 libunistring_gl_unicase_special_lookup [function] [call site] 00156
5 gl_unicase_special_hash [function] [call site] 00157
5 memcmp [call site] 00158
4 libunistring_uc_is_cased [function] [call site] 00159
5 bitmap_lookup [function] [call site] 00160
4 u8_mbtouc_unsafe [function] [call site] 00161
4 libunistring_uc_is_case_ignorable [function] [call site] 00162
5 bitmap_lookup [function] [call site] 00163
4 libunistring_uc_is_cased [function] [call site] 00164
4 libunistring_uc_is_cased [function] [call site] 00165
4 uc_is_property_soft_dotted [function] [call site] 00166
5 bitmap_lookup [function] [call site] 00167
4 u8_mbtouc_unsafe [function] [call site] 00168
4 uc_combining_class [function] [call site] 00169
4 u8_mbtouc_unsafe [function] [call site] 00170
4 uc_combining_class [function] [call site] 00171
4 abort [call site] 00172
4 u8_uctomb [function] [call site] 00173
4 __errno_location [call site] 00174
4 abort [call site] 00175
4 __errno_location [call site] 00176
4 __errno_location [call site] 00177
4 realloc [call site] 00179
4 __errno_location [call site] 00180
4 u8_uctomb [function] [call site] 00181
4 __errno_location [call site] 00182
4 abort [call site] 00183
4 libunistring_uc_is_case_ignorable [function] [call site] 00184
4 uc_combining_class [function] [call site] 00185
4 u8_normalize [function] [call site] 00186
5 u8_mbtouc_unsafe [function] [call site] 00187
5 abort [call site] 00188
5 abort [call site] 00189
5 uc_combining_class [function] [call site] 00190
5 libunistring_gl_uninorm_decompose_merge_sort_inplace [function] [call site] 00191
6 libunistring_gl_uninorm_decompose_merge_sort_inplace [function] [call site] 00192
7 gl_uninorm_decompose_merge_sort_fromto [function] [call site] 00193
8 gl_uninorm_decompose_merge_sort_fromto [function] [call site] 00194
9 gl_uninorm_decompose_merge_sort_fromto [function] [call site] 00195
5 u8_uctomb [function] [call site] 00198
5 __errno_location [call site] 00199
5 abort [call site] 00200
5 __errno_location [call site] 00201
5 __errno_location [call site] 00202
5 realloc [call site] 00204
5 __errno_location [call site] 00205
5 u8_uctomb [function] [call site] 00206
5 __errno_location [call site] 00207
5 abort [call site] 00208
5 abort [call site] 00209
5 __errno_location [call site] 00210
5 libunistring_rpl_free [function] [call site] 00211
5 __errno_location [call site] 00212
5 realloc [call site] 00213
5 abort [call site] 00214
5 libunistring_rpl_free [function] [call site] 00215
5 __errno_location [call site] 00216
5 libunistring_rpl_free [function] [call site] 00217
5 libunistring_rpl_free [function] [call site] 00218
5 __errno_location [call site] 00219
4 libunistring_rpl_free [function] [call site] 00220
4 __errno_location [call site] 00221
4 realloc [call site] 00222
4 __errno_location [call site] 00223
4 libunistring_rpl_free [function] [call site] 00224
4 __errno_location [call site] 00225
3 uc_tolower [function] [call site] 00226
2 iconv_close [call site] 00227
2 u8_strlen [function] [call site] 00228
3 strlen [call site] 00229
2 u8_tolower [function] [call site] 00230
1 psl_str_to_utf8lower [function] [call site] 00231
1 psl_str_to_utf8lower [function] [call site] 00232
1 psl_free [function] [call site] 00233
2 vector_free [function] [call site] 00234
1 psl_is_public_suffix [function] [call site] 00235
1 psl_check_version_number [function] [call site] 00236
1 psl_get_version [function] [call site] 00237
1 psl_dist_filename [function] [call site] 00238
1 psl_builtin_outdated [function] [call site] 00239
2 stat [call site] 00240
1 psl_builtin_filename [function] [call site] 00241
1 psl_builtin_sha1sum [function] [call site] 00242
1 psl_builtin_file_time [function] [call site] 00243