Fuzz introspector: libidn_toascii_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 358 idna_to_ascii_4z call site: 00082 /src/libidn/lib/idna.c:537
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: 00019 /src/libidn/lib/stringprep.c:435
0 0 None 4 12 stringprep call site: 00054 /src/libidn/lib/stringprep.c:454
0 0 None 2 58 idna_to_ascii_4i call site: 00062 /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 2 2 idna_to_ascii_4z call site: 00076 /src/libidn/lib/idna.c:494
0 0 None 2 2 idna_to_ascii_4z call site: 00077 /src/libidn/lib/idna.c:504
0 0 None 0 260 stringprep_4i call site: 00021 /src/libidn/lib/stringprep.c:202

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 idna_to_ascii_4i [function] [call site] 00004
2 stringprep_ucs4_to_utf8 [function] [call site] 00005
3 g_ucs4_to_utf8 [function] [call site] 00006
4 g_unichar_to_utf8 [function] [call site] 00007
2 strlen [call site] 00008
2 realloc [call site] 00009
2 rpl_free [function] [call site] 00010
3 __errno_location [call site] 00011
2 stringprep [function] [call site] 00012
3 strlen [call site] 00013
3 stringprep_utf8_to_ucs4 [function] [call site] 00015
4 strlen [call site] 00016
4 g_utf8_to_ucs4_fast [function] [call site] 00018
3 realloc [call site] 00019
3 stringprep_4i [function] [call site] 00021
4 stringprep_ucs4_nfkc_normalize [function] [call site] 00022
5 stringprep_ucs4_to_utf8 [function] [call site] 00023
5 _g_utf8_normalize_wc [function] [call site] 00024
6 g_utf8_get_char [function] [call site] 00025
6 decompose_hangul [function] [call site] 00026
6 find_decomposition [function] [call site] 00027
6 g_utf8_strlen [function] [call site] 00028
6 g_utf8_get_char [function] [call site] 00029
6 decompose_hangul [function] [call site] 00030
6 find_decomposition [function] [call site] 00031
6 g_utf8_get_char [function] [call site] 00032
6 g_unicode_canonical_ordering [function] [call site] 00033
6 g_unicode_canonical_ordering [function] [call site] 00034
6 combine [function] [call site] 00035
7 combine_hangul [function] [call site] 00036
4 stringprep_find_string_in_table [function] [call site] 00040
5 stringprep_find_character_in_table [function] [call site] 00041
6 bsearch [call site] 00042
6 _compare_table_element [function] [call site] 00043
4 stringprep_find_string_in_table [function] [call site] 00044
4 stringprep_apply_table_to_string [function] [call site] 00045
5 stringprep_find_string_in_table [function] [call site] 00046
4 stringprep_find_string_in_table [function] [call site] 00047
4 stringprep_find_string_in_table [function] [call site] 00048
4 stringprep_find_string_in_table [function] [call site] 00049
4 stringprep_find_character_in_table [function] [call site] 00050
4 stringprep_find_character_in_table [function] [call site] 00051
3 stringprep_ucs4_to_utf8 [function] [call site] 00053
3 strlen [call site] 00055
3 strcpy [call site] 00057
2 stringprep [function] [call site] 00059
2 stringprep_utf8_to_ucs4 [function] [call site] 00061
2 punycode_encode [function] [call site] 00067
3 encode_basic [function] [call site] 00068
3 encode_digit [function] [call site] 00069
3 encode_digit [function] [call site] 00070
2 strlen [call site] 00074
1 idna_to_ascii_4i [function] [call site] 00075
1 idna_to_ascii_4z [function] [call site] 00076
2 strcpy [call site] 00077
2 strcpy [call site] 00078
2 idna_to_ascii_4i [function] [call site] 00079
2 strlen [call site] 00081
2 realloc [call site] 00082
2 strcat [call site] 00084
2 strcat [call site] 00085
2 strdup [call site] 00086
1 idna_to_ascii_4z [function] [call site] 00089
1 idna_to_ascii_8z [function] [call site] 00091
2 stringprep_utf8_to_ucs4 [function] [call site] 00092
2 idna_to_ascii_4z [function] [call site] 00093
1 idna_to_ascii_8z [function] [call site] 00096
1 idna_to_ascii_lz [function] [call site] 00098
2 stringprep_locale_to_utf8 [function] [call site] 00099
3 stringprep_locale_charset [function] [call site] 00100
4 getenv [call site] 00101
4 nl_langinfo [call site] 00102
2 idna_to_ascii_8z [function] [call site] 00103
1 idna_to_ascii_lz [function] [call site] 00106