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 :

['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 :

['strlen']

2 177 stringprep_utf8_nfkc_normalize call site: 00097 /src/libidn/lib/nfkc.c:1074
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: 00018 /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 278 stringprep_profile call site: 00008 /src/libidn/lib/stringprep.c:508
0 0 None 2 2 str_cd_iconv call site: 00000 /src/libidn/lib/gl/striconv.c:266
0 0 None 2 2 tld_get_table call site: 00078 /src/libidn/lib/tld.c:64
0 0 None 0 260 stringprep_4i call site: 00020 /src/libidn/lib/stringprep.c:202
0 0 None 0 260 stringprep_4i call site: 00050 /src/libidn/lib/stringprep.c:297

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 strcpy [call site] 00010
2 stringprep [function] [call site] 00011
3 strlen [call site] 00012
3 stringprep_utf8_to_ucs4 [function] [call site] 00014
4 strlen [call site] 00015
4 g_utf8_to_ucs4_fast [function] [call site] 00017
3 realloc [call site] 00018
3 stringprep_4i [function] [call site] 00020
4 stringprep_ucs4_nfkc_normalize [function] [call site] 00021
5 stringprep_ucs4_to_utf8 [function] [call site] 00022
6 g_ucs4_to_utf8 [function] [call site] 00023
7 g_unichar_to_utf8 [function] [call site] 00024
5 _g_utf8_normalize_wc [function] [call site] 00025
6 g_utf8_get_char [function] [call site] 00026
6 decompose_hangul [function] [call site] 00027
6 find_decomposition [function] [call site] 00028
6 g_utf8_strlen [function] [call site] 00029
6 g_utf8_get_char [function] [call site] 00030
6 decompose_hangul [function] [call site] 00031
6 find_decomposition [function] [call site] 00032
6 g_utf8_get_char [function] [call site] 00033
6 g_unicode_canonical_ordering [function] [call site] 00034
6 g_unicode_canonical_ordering [function] [call site] 00035
6 combine [function] [call site] 00036
7 combine_hangul [function] [call site] 00037
4 stringprep_find_string_in_table [function] [call site] 00041
5 stringprep_find_character_in_table [function] [call site] 00042
6 bsearch [call site] 00043
6 _compare_table_element [function] [call site] 00044
4 stringprep_find_string_in_table [function] [call site] 00045
4 stringprep_apply_table_to_string [function] [call site] 00046
5 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_string_in_table [function] [call site] 00050
4 stringprep_find_character_in_table [function] [call site] 00051
4 stringprep_find_character_in_table [function] [call site] 00052
3 stringprep_ucs4_to_utf8 [function] [call site] 00054
3 strlen [call site] 00056
3 strcpy [call site] 00058
1 pr29_8z [function] [call site] 00063
2 stringprep_utf8_to_ucs4 [function] [call site] 00064
2 pr29_4z [function] [call site] 00065
3 pr29_4 [function] [call site] 00066
4 first_column [function] [call site] 00067
4 combinationclass [function] [call site] 00068
4 in_last_column_row [function] [call site] 00069
1 tld_get_z [function] [call site] 00071
2 strlen [call site] 00072
2 calloc [call site] 00073
2 tld_get_4 [function] [call site] 00074
1 tld_default_table [function] [call site] 00077
2 tld_get_table [function] [call site] 00078
3 strcmp [call site] 00079
2 tld_get_table [function] [call site] 00080
1 tld_check_8z [function] [call site] 00081
2 stringprep_utf8_to_ucs4 [function] [call site] 00082
2 tld_check_4 [function] [call site] 00083
3 tld_get_4 [function] [call site] 00084
3 tld_default_table [function] [call site] 00085
3 tld_check_4t [function] [call site] 00087
4 _tld_checkchar [function] [call site] 00088
1 tld_check_lz [function] [call site] 00090
2 stringprep_locale_to_utf8 [function] [call site] 00091
3 stringprep_locale_charset [function] [call site] 00092
4 getenv [call site] 00093
4 nl_langinfo [call site] 00094
2 tld_check_8z [function] [call site] 00095
1 stringprep_utf8_nfkc_normalize [function] [call site] 00097
2 strlen [call site] 00098
2 g_utf8_normalize [function] [call site] 00100
3 _g_utf8_normalize_wc [function] [call site] 00101
3 g_ucs4_to_utf8 [function] [call site] 00102
1 stringprep_utf8_to_unichar [function] [call site] 00105
2 g_utf8_get_char [function] [call site] 00106
1 stringprep_unichar_to_utf8 [function] [call site] 00107
2 g_unichar_to_utf8 [function] [call site] 00108
1 stringprep [function] [call site] 00109
1 stringprep [function] [call site] 00110
1 __assert_fail [call site] 00111
1 stringprep_4zi [function] [call site] 00112
2 stringprep_4zi_1 [function] [call site] 00113
3 stringprep_4i [function] [call site] 00114
1 tld_get_4z [function] [call site] 00115
2 tld_get_4 [function] [call site] 00116
1 tld_check_4tz [function] [call site] 00118
2 tld_check_4t [function] [call site] 00119
1 tld_check_4z [function] [call site] 00120
2 tld_check_4 [function] [call site] 00121