Fuzz introspector: libidn_stringprep_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
24 24 3 :

['__errno_location', 'realloc', 'iconv']

24 28 str_cd_iconv call site: 00110 /src/libidn/lib/gl/striconv.c:276
8 12 3 :

['__errno_location', 'rpl_free', 'iconv']

12 16 str_cd_iconv call site: 00114 /src/libidn/lib/gl/striconv.c:309
2 2 1 :

['strlen']

2 175 stringprep_utf8_nfkc_normalize call site: 00128 /src/libidn/lib/nfkc.c:1052
2 2 1 :

['__errno_location']

2 2 str_iconv call site: 00101 /src/libidn/lib/gl/striconv.c:373
0 0 None 12 16 str_cd_iconv call site: 00109 /src/libidn/lib/gl/striconv.c:274
0 0 None 6 307 stringprep call site: 00020 /src/libidn/lib/stringprep.c:433
0 0 None 4 12 stringprep call site: 00057 /src/libidn/lib/stringprep.c:452
0 0 None 2 276 stringprep_profile call site: 00008 /src/libidn/lib/stringprep.c:506
0 0 None 2 2 str_cd_iconv call site: 00105 /src/libidn/lib/gl/striconv.c:250
0 0 None 2 2 tld_get_table call site: 00079 /src/libidn/lib/tld.c:64
0 0 None 0 259 stringprep_4i call site: 00022 /src/libidn/lib/stringprep.c:201
0 0 None 0 259 stringprep_4i call site: 00052 /src/libidn/lib/stringprep.c:296

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 __assert_fail [call site] 00001
1 __assert_fail [call site] 00002
1 __assert_fail [call site] 00003
1 stringprep_check_version [function] [call site] 00004
2 strverscmp [call site] 00005
1 stringprep_profile [function] [call site] 00006
2 strlen [call site] 00007
2 strcmp [call site] 00008
2 rpl_free [function] [call site] 00009
3 __errno_location [call site] 00010
3 __errno_location [call site] 00011
2 strcpy [call site] 00012
2 stringprep [function] [call site] 00013
3 strlen [call site] 00014
3 stringprep_utf8_to_ucs4 [function] [call site] 00016
4 strlen [call site] 00017
4 g_utf8_to_ucs4_fast [function] [call site] 00019
3 realloc [call site] 00020
3 stringprep_4i [function] [call site] 00022
4 stringprep_ucs4_nfkc_normalize [function] [call site] 00023
5 stringprep_ucs4_to_utf8 [function] [call site] 00024
6 g_ucs4_to_utf8 [function] [call site] 00025
7 g_unichar_to_utf8 [function] [call site] 00026
5 _g_utf8_normalize_wc [function] [call site] 00027
6 g_utf8_get_char [function] [call site] 00028
6 decompose_hangul [function] [call site] 00029
6 find_decomposition [function] [call site] 00030
6 g_utf8_strlen [function] [call site] 00031
6 g_utf8_get_char [function] [call site] 00032
6 decompose_hangul [function] [call site] 00033
6 find_decomposition [function] [call site] 00034
6 g_utf8_get_char [function] [call site] 00035
6 g_unicode_canonical_ordering [function] [call site] 00036
6 g_unicode_canonical_ordering [function] [call site] 00037
6 combine [function] [call site] 00038
7 combine_hangul [function] [call site] 00039
4 stringprep_find_string_in_table [function] [call site] 00043
5 stringprep_find_character_in_table [function] [call site] 00044
6 bsearch [call site] 00045
6 _compare_table_element [function] [call site] 00046
4 stringprep_find_string_in_table [function] [call site] 00047
4 stringprep_apply_table_to_string [function] [call site] 00048
5 stringprep_find_string_in_table [function] [call site] 00049
4 stringprep_find_string_in_table [function] [call site] 00050
4 stringprep_find_string_in_table [function] [call site] 00051
4 stringprep_find_string_in_table [function] [call site] 00052
4 stringprep_find_character_in_table [function] [call site] 00053
4 stringprep_find_character_in_table [function] [call site] 00054
3 stringprep_ucs4_to_utf8 [function] [call site] 00056
3 strlen [call site] 00058
3 strcpy [call site] 00060
1 pr29_8z [function] [call site] 00065
2 stringprep_utf8_to_ucs4 [function] [call site] 00066
2 pr29_4z [function] [call site] 00067
3 pr29_4 [function] [call site] 00068
4 first_column [function] [call site] 00069
4 combinationclass [function] [call site] 00070
4 in_last_column_row [function] [call site] 00071
1 tld_get_z [function] [call site] 00073
2 strlen [call site] 00074
2 calloc [call site] 00075
2 tld_get_4 [function] [call site] 00076
1 tld_default_table [function] [call site] 00078
2 tld_get_table [function] [call site] 00079
3 strcmp [call site] 00080
2 tld_get_table [function] [call site] 00081
1 tld_check_8z [function] [call site] 00082
2 stringprep_utf8_to_ucs4 [function] [call site] 00083
2 tld_check_4 [function] [call site] 00084
3 tld_get_4 [function] [call site] 00085
3 tld_default_table [function] [call site] 00086
3 tld_check_4t [function] [call site] 00088
4 _tld_checkchar [function] [call site] 00089
1 tld_check_lz [function] [call site] 00091
2 stringprep_locale_to_utf8 [function] [call site] 00092
3 stringprep_locale_charset [function] [call site] 00093
4 getenv [call site] 00094
4 nl_langinfo [call site] 00095
3 stringprep_convert [function] [call site] 00096
4 str_iconv [function] [call site] 00097
5 c_strcasecmp [function] [call site] 00098
5 strdup [call site] 00101
5 __errno_location [call site] 00102
5 iconv_open [call site] 00103
5 str_cd_iconv [function] [call site] 00104
6 strlen [call site] 00105
6 __errno_location [call site] 00106
6 iconv [call site] 00107
6 iconv [call site] 00108
6 __errno_location [call site] 00109
6 __errno_location [call site] 00110
6 __errno_location [call site] 00111
6 realloc [call site] 00112
6 __errno_location [call site] 00113
6 iconv [call site] 00114
6 __errno_location [call site] 00115
6 __errno_location [call site] 00116
6 realloc [call site] 00117
6 __errno_location [call site] 00118
6 realloc [call site] 00119
5 __errno_location [call site] 00121
5 iconv_close [call site] 00122
5 __errno_location [call site] 00123
5 iconv_close [call site] 00124
2 tld_check_8z [function] [call site] 00126
1 stringprep_utf8_nfkc_normalize [function] [call site] 00128
2 strlen [call site] 00129
2 g_utf8_normalize [function] [call site] 00131
3 _g_utf8_normalize_wc [function] [call site] 00132
3 g_ucs4_to_utf8 [function] [call site] 00133
1 stringprep_utf8_to_unichar [function] [call site] 00136
2 g_utf8_get_char [function] [call site] 00137
1 stringprep_unichar_to_utf8 [function] [call site] 00138
2 g_unichar_to_utf8 [function] [call site] 00139
1 stringprep [function] [call site] 00140
1 stringprep [function] [call site] 00141
1 __assert_fail [call site] 00142
1 stringprep_4zi [function] [call site] 00143
2 stringprep_4zi_1 [function] [call site] 00144
3 stringprep_4i [function] [call site] 00145
1 tld_get_4z [function] [call site] 00146
2 tld_get_4 [function] [call site] 00147
1 tld_check_4tz [function] [call site] 00149
2 tld_check_4t [function] [call site] 00150
1 tld_check_4z [function] [call site] 00151
2 tld_check_4 [function] [call site] 00152