Fuzz introspector: libpsl_idn_load_dafsa_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
151 155 12 :

['fgets', 'add_punycode_if_needed', 'vector_alloc', 'isspace_ascii', 'psl_idna_close', 'vector_find', 'vector_sort', 'psl_idna_open', 'vector_get', 'suffix_init', 'strstr', 'vector_add']

151 155 psl_load_fp call site: 00007 /src/libpsl/src/psl.c:1204
0 0 None 167 183 psl_load_fp call site: 00004 /src/libpsl/src/psl.c:1192
0 0 None 165 181 psl_load_fp call site: 00005 /src/libpsl/src/psl.c:1195
0 0 None 163 179 psl_load_fp call site: 00006 /src/libpsl/src/psl.c:1199
0 0 None 34 187 is_public_suffix call site: 00126 /src/libpsl/src/psl.c:849
0 0 None 32 116 is_public_suffix call site: 00128 /src/libpsl/src/psl.c:864
0 0 None 12 353 idna_to_ascii_4z call site: 00109 /src/libidn/lib/idna.c:537
0 0 None 8 130 _g_utf8_normalize_wc call site: 00057 /src/libidn/lib/nfkc.c:784
0 0 None 8 130 _g_utf8_normalize_wc call site: 00059 /src/libidn/lib/nfkc.c:794
0 0 None 6 310 stringprep call site: 00051 /src/libidn/lib/stringprep.c:435
0 0 None 6 18 psl_load_fp call site: 00008 /src/libpsl/src/psl.c:1212
0 0 None 6 18 psl_load_fp call site: 00010 /src/libpsl/src/psl.c:1220

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 __assert_fail [call site] 00001
1 fmemopen [call site] 00002
1 __assert_fail [call site] 00003
1 psl_load_fp [function] [call site] 00004
2 calloc [call site] 00005
2 fgets [call site] 00006
2 strlen [call site] 00007
2 atoi [call site] 00008
2 fread [call site] 00009
2 realloc [call site] 00010
2 realloc [call site] 00011
2 GetUtfMode [function] [call site] 00012
2 psl_idna_open [function] [call site] 00013
2 vector_alloc [function] [call site] 00014
3 calloc [call site] 00015
2 isspace_ascii [function] [call site] 00016
2 strstr [call site] 00017
2 strstr [call site] 00018
2 strstr [call site] 00019
2 strstr [call site] 00020
2 isspace_ascii [function] [call site] 00021
2 suffix_init [function] [call site] 00022
2 vector_find [function] [call site] 00023
2 vector_get [function] [call site] 00024
2 vector_add [function] [call site] 00025
3 realloc [call site] 00026
2 add_punycode_if_needed [function] [call site] 00027
3 str_is_ascii [function] [call site] 00028
3 psl_idna_toASCII [function] [call site] 00029
4 utf8_is_valid [function] [call site] 00030
4 idna_to_ascii_8z [function] [call site] 00031
5 stringprep_utf8_to_ucs4 [function] [call site] 00032
6 strlen [call site] 00033
6 g_utf8_to_ucs4_fast [function] [call site] 00035
5 idna_to_ascii_4z [function] [call site] 00036
6 strcpy [call site] 00037
6 strcpy [call site] 00038
6 idna_to_ascii_4i [function] [call site] 00039
7 stringprep_ucs4_to_utf8 [function] [call site] 00040
8 g_ucs4_to_utf8 [function] [call site] 00041
9 g_unichar_to_utf8 [function] [call site] 00042
7 strlen [call site] 00043
7 realloc [call site] 00044
7 rpl_free [function] [call site] 00045
8 __errno_location [call site] 00046
7 stringprep [function] [call site] 00047
8 strlen [call site] 00048
8 stringprep_utf8_to_ucs4 [function] [call site] 00050
8 realloc [call site] 00051
8 stringprep_4i [function] [call site] 00053
9 stringprep_ucs4_nfkc_normalize [function] [call site] 00054
10 stringprep_ucs4_to_utf8 [function] [call site] 00055
10 _g_utf8_normalize_wc [function] [call site] 00056
11 g_utf8_get_char [function] [call site] 00057
11 decompose_hangul [function] [call site] 00058
11 find_decomposition [function] [call site] 00059
11 g_utf8_strlen [function] [call site] 00060
11 g_utf8_get_char [function] [call site] 00061
11 decompose_hangul [function] [call site] 00062
11 find_decomposition [function] [call site] 00063
11 g_utf8_get_char [function] [call site] 00064
11 g_unicode_canonical_ordering [function] [call site] 00065
11 g_unicode_canonical_ordering [function] [call site] 00066
11 combine [function] [call site] 00067
12 combine_hangul [function] [call site] 00068
10 rpl_free [function] [call site] 00069
9 stringprep_find_string_in_table [function] [call site] 00072
10 stringprep_find_character_in_table [function] [call site] 00073
11 bsearch [call site] 00074
11 _compare_table_element [function] [call site] 00075
9 stringprep_find_string_in_table [function] [call site] 00076
9 stringprep_apply_table_to_string [function] [call site] 00077
10 stringprep_find_string_in_table [function] [call site] 00078
9 stringprep_find_string_in_table [function] [call site] 00079
9 stringprep_find_string_in_table [function] [call site] 00080
9 stringprep_find_string_in_table [function] [call site] 00081
9 stringprep_find_character_in_table [function] [call site] 00082
9 stringprep_find_character_in_table [function] [call site] 00083
8 stringprep_ucs4_to_utf8 [function] [call site] 00085
8 strlen [call site] 00087
8 strcpy [call site] 00089
7 stringprep [function] [call site] 00091
7 stringprep_utf8_to_ucs4 [function] [call site] 00093
7 punycode_encode [function] [call site] 00099
8 encode_basic [function] [call site] 00100
8 encode_digit [function] [call site] 00101
8 encode_digit [function] [call site] 00102
7 strlen [call site] 00106
6 strlen [call site] 00108
6 realloc [call site] 00109
6 strcat [call site] 00111
6 strcat [call site] 00112
6 strdup [call site] 00113
3 strcmp [call site] 00115
3 strlen [call site] 00116
3 suffix_init [function] [call site] 00117
3 vector_add [function] [call site] 00118
2 fgets [call site] 00119
2 vector_sort [function] [call site] 00120
3 qsort [call site] 00121
2 psl_idna_close [function] [call site] 00122
2 psl_free [function] [call site] 00123
3 vector_free [function] [call site] 00124
1 psl_is_public_suffix [function] [call site] 00125
2 is_public_suffix [function] [call site] 00126
3 psl_idna_open [function] [call site] 00127
3 psl_idna_toASCII [function] [call site] 00128
3 strlen [call site] 00129
3 psl_idna_close [function] [call site] 00130
3 LookupStringInFixedSet [function] [call site] 00131
4 GetNextOffset [function] [call site] 00132
4 IsMatch [function] [call site] 00134
5 IsMatchUnchecked [function] [call site] 00135
6 GetMultibyteLength [function] [call site] 00136
4 NextPos [function] [call site] 00137
5 GetMultibyteLength [function] [call site] 00138
5 GetMultibyteLength [function] [call site] 00139
4 GetReturnValue [function] [call site] 00143
4 IsEndCharMatch [function] [call site] 00144
5 IsMatchUnchecked [function] [call site] 00145
3 strchr [call site] 00147
3 strlen [call site] 00148
3 LookupStringInFixedSet [function] [call site] 00149
3 vector_get [function] [call site] 00150
3 vector_find [function] [call site] 00151
3 strchr [call site] 00152
3 strlen [call site] 00153
3 vector_find [function] [call site] 00154
1 psl_is_public_suffix [function] [call site] 00155
1 psl_suffix_wildcard_count [function] [call site] 00156
1 psl_suffix_exception_count [function] [call site] 00157
1 psl_suffix_count [function] [call site] 00158
1 fclose [call site] 00160
1 psl_latest [function] [call site] 00161
2 insert_file [function] [call site] 00162
3 stat [call site] 00163
2 insert_file [function] [call site] 00164
2 insert_file [function] [call site] 00165
2 psl_load_file [function] [call site] 00166
3 fopen [call site] 00167
3 psl_load_fp [function] [call site] 00168
3 fclose [call site] 00169
2 psl_builtin [function] [call site] 00170