Fuzz introspector: libidn_tounicode_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 :

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

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

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

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

['__errno_location']

2 2 str_iconv call site: 00000 /src/libidn/lib/gl/striconv.c:399
0 0 None 12 16 str_cd_iconv call site: 00000 /src/libidn/lib/gl/striconv.c:295
0 0 None 6 310 stringprep call site: 00020 /src/libidn/lib/stringprep.c:435
0 0 None 4 12 stringprep call site: 00055 /src/libidn/lib/stringprep.c:454
0 0 None 2 446 idna_to_unicode_4z4z call site: 00100 /src/libidn/lib/idna.c:660
0 0 None 2 446 idna_to_unicode_4z4z call site: 00103 /src/libidn/lib/idna.c:675
0 0 None 2 58 idna_to_ascii_4i call site: 00081 /src/libidn/lib/idna.c:158
0 0 None 2 2 str_cd_iconv call site: 00000 /src/libidn/lib/gl/striconv.c:266
0 0 None 0 260 stringprep_4i call site: 00022 /src/libidn/lib/stringprep.c:202
0 0 None 0 260 stringprep_4i call site: 00023 /src/libidn/lib/stringprep.c:207

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 __assert_fail [call site] 00001
1 __assert_fail [call site] 00002
1 idna_to_unicode_44i [function] [call site] 00003
2 stringprep_ucs4_to_utf8 [function] [call site] 00004
3 g_ucs4_to_utf8 [function] [call site] 00005
4 g_unichar_to_utf8 [function] [call site] 00006
2 idna_to_unicode_internal [function] [call site] 00007
3 strlen [call site] 00008
3 realloc [call site] 00009
3 rpl_free [function] [call site] 00010
4 __errno_location [call site] 00011
4 __errno_location [call site] 00012
3 stringprep [function] [call site] 00013
4 strlen [call site] 00014
4 stringprep_utf8_to_ucs4 [function] [call site] 00016
5 strlen [call site] 00017
5 g_utf8_to_ucs4_fast [function] [call site] 00019
4 realloc [call site] 00020
4 stringprep_4i [function] [call site] 00022
5 stringprep_ucs4_nfkc_normalize [function] [call site] 00023
6 stringprep_ucs4_to_utf8 [function] [call site] 00024
6 _g_utf8_normalize_wc [function] [call site] 00025
7 g_utf8_get_char [function] [call site] 00026
7 decompose_hangul [function] [call site] 00027
7 find_decomposition [function] [call site] 00028
7 g_utf8_strlen [function] [call site] 00029
7 g_utf8_get_char [function] [call site] 00030
7 decompose_hangul [function] [call site] 00031
7 find_decomposition [function] [call site] 00032
7 g_utf8_get_char [function] [call site] 00033
7 g_unicode_canonical_ordering [function] [call site] 00034
7 g_unicode_canonical_ordering [function] [call site] 00035
7 combine [function] [call site] 00036
8 combine_hangul [function] [call site] 00037
5 stringprep_find_string_in_table [function] [call site] 00041
6 stringprep_find_character_in_table [function] [call site] 00042
7 bsearch [call site] 00043
7 _compare_table_element [function] [call site] 00044
5 stringprep_find_string_in_table [function] [call site] 00045
5 stringprep_apply_table_to_string [function] [call site] 00046
6 stringprep_find_string_in_table [function] [call site] 00047
5 stringprep_find_string_in_table [function] [call site] 00048
5 stringprep_find_string_in_table [function] [call site] 00049
5 stringprep_find_string_in_table [function] [call site] 00050
5 stringprep_find_character_in_table [function] [call site] 00051
5 stringprep_find_character_in_table [function] [call site] 00052
4 stringprep_ucs4_to_utf8 [function] [call site] 00054
4 strlen [call site] 00056
4 strcpy [call site] 00058
3 stringprep [function] [call site] 00060
3 c_strncasecmp [function] [call site] 00062
3 strlen [call site] 00066
3 strlen [call site] 00067
3 punycode_decode [function] [call site] 00068
3 idna_to_ascii_4i [function] [call site] 00072
4 stringprep_ucs4_to_utf8 [function] [call site] 00073
4 strlen [call site] 00074
4 realloc [call site] 00075
4 stringprep [function] [call site] 00077
4 stringprep [function] [call site] 00078
4 stringprep_utf8_to_ucs4 [function] [call site] 00080
4 punycode_encode [function] [call site] 00086
5 encode_basic [function] [call site] 00087
5 encode_digit [function] [call site] 00088
5 encode_digit [function] [call site] 00089
4 strlen [call site] 00093
3 c_strcasecmp [function] [call site] 00095
1 idna_to_unicode_44i [function] [call site] 00098
1 __assert_fail [call site] 00099
1 idna_to_unicode_4z4z [function] [call site] 00100
2 idna_to_unicode_44i [function] [call site] 00102
2 realloc [call site] 00103
1 idna_to_unicode_4z4z [function] [call site] 00109
1 idna_to_unicode_8z4z [function] [call site] 00111
2 stringprep_utf8_to_ucs4 [function] [call site] 00112
2 idna_to_unicode_4z4z [function] [call site] 00113
1 idna_to_unicode_8z4z [function] [call site] 00116
1 idna_to_unicode_8z8z [function] [call site] 00118
2 idna_to_unicode_8z4z [function] [call site] 00119
2 stringprep_ucs4_to_utf8 [function] [call site] 00120
1 idna_to_unicode_8z8z [function] [call site] 00123
1 idna_to_unicode_8zlz [function] [call site] 00125
2 idna_to_unicode_8z8z [function] [call site] 00126
2 stringprep_utf8_to_locale [function] [call site] 00127
3 stringprep_locale_charset [function] [call site] 00128
4 getenv [call site] 00129
4 nl_langinfo [call site] 00130
1 idna_to_unicode_8zlz [function] [call site] 00133
1 idna_to_unicode_lzlz [function] [call site] 00135
2 stringprep_locale_to_utf8 [function] [call site] 00136
3 stringprep_locale_charset [function] [call site] 00137
2 idna_to_unicode_8zlz [function] [call site] 00138
1 idna_to_unicode_lzlz [function] [call site] 00141