Fuzz introspector: libpsl/fuzz/libpsl_load_dafsa_fuzzer.c
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
828 828 1 :

['icu_59::Norm2AllModes::getNFKCInstance(UErrorCode&)']

830 1929 icu_59::Normalizer2::getInstance(charconst*,charconst*,UNormalization2Mode,UErrorCode&) call site: 00000 /src/icu/source/common/loadednormalizer2impl.cpp:221
826 836 4 :

['U_FAILURE(UErrorCode) [clone .398]', 'ucnv_load_59', 'umtx_unlock_59', 'umtx_lock_59']

826 836 ucnv_loadSharedData_59 call site: 00000 /src/icu/source/common/ucnv_bld.cpp:800
753 897 12 :

['icu_59::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .2317]', 'udata_findCachedData(char const*, UErrorCode&)', 'icu_59::UDataPathIterator::~UDataPathIterator()', 'udata_checkCommonData_59', 'icu_59::UDataPathIterator::next(UErrorCode*)', 'uprv_mapFile_59', 'UDataMemory_isLoaded_59', 'U_SUCCESS(UErrorCode) [clone .2320]', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'u_getDataDirectory_59']

753 897 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/source/common/udata.cpp:671
159 159 3 :

['u_strchr_59', 'icu_59::Normalizer2Impl::copyLowPrefixFromNulTerminated(char16_t const*, int, icu_59::ReorderingBuffer*, UErrorCode&) const', 'U_FAILURE(UErrorCode) [clone .5540]']

172 880 icu_59::Normalizer2Impl::compose(char16_tconst*,char16_tconst*,signedchar,signedchar,icu_59::ReorderingBuffer&,UErrorCode&)const call site: 00000 /src/icu/source/common/normalizer2impl.cpp:1099
158 158 1 :

['icu_59::Norm2AllModes::getNFCInstance(UErrorCode&)']

160 1259 icu_59::Normalizer2::getInstance(charconst*,charconst*,UNormalization2Mode,UErrorCode&) call site: 00000 /src/icu/source/common/loadednormalizer2impl.cpp:219
123 123 1 :

['_getKeywords(char const*, char, char*, int, char*, int, int*, signed char, char const*, char const*, UErrorCode*)']

125 135 _canonicalize(charconst*,char*,int,unsignedint,UErrorCode*) call site: 00000 /src/icu/source/common/uloc.cpp:1903
55 153 2 :

['icu_59::ReorderingBuffer::appendZeroCC(char16_t const*, char16_t const*, UErrorCode&)', 'u_strchr_59']

55 153 icu_59::Normalizer2Impl::composeAndAppend(char16_tconst*,char16_tconst*,signedchar,signedchar,icu_59::UnicodeString&,icu_59::ReorderingBuffer&,UErrorCode&)const call site: 00000 /src/icu/source/common/normalizer2impl.cpp:1474
55 55 1 :

['icu_59::Edits::addReplace(int, int)']

55 55 appendResult(char16_t*,int,int,int,char16_tconst*,int,unsignedint,icu_59::Edits*) call site: 00000 /src/icu/source/common/ustrcase.cpp:91
52 52 1 :

['icu_59::UTS46::checkLabelContextO(char16_t const*, int, icu_59::IDNAInfo&) const']

52 752 icu_59::UTS46::processLabel(icu_59::UnicodeString&,int,int,signedchar,icu_59::IDNAInfo&,UErrorCode&)const call site: 00000 /src/icu/source/common/uts46.cpp:837
43 43 1 :

['_idn2_contexto_rule']

43 110 _idn2_label_test call site: 00000 /src/libidn2/lib/idna.c:233
42 42 1 :

['ucnv_unloadSharedDataIfReady_59']

42 46 ucnv_close_59 call site: 00000 /src/icu/source/common/ucnv.cpp:385
42 42 1 :

['ucnv_unloadSharedDataIfReady_59']

42 42 ucnv_createConverterFromSharedData_59 call site: 00000 /src/icu/source/common/ucnv_bld.cpp:981

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 strncmp [call site] 00008
2 atoi [call site] 00009
2 fread [call site] 00010
2 realloc [call site] 00011
2 realloc [call site] 00012
2 GetUtfMode [function] [call site] 00013
2 psl_idna_open [function] [call site] 00014
2 vector_alloc [function] [call site] 00015
3 calloc [call site] 00016
2 suffix_compare_array [function] [call site] 00017
3 suffix_compare [function] [call site] 00018
4 strcmp [call site] 00019
2 isspace_ascii [function] [call site] 00020
2 strstr [call site] 00021
2 strstr [call site] 00022
2 strstr [call site] 00023
2 strstr [call site] 00024
2 isspace_ascii [function] [call site] 00025
2 suffix_init [function] [call site] 00026
2 vector_find [function] [call site] 00027
2 vector_get [function] [call site] 00028
2 vector_add [function] [call site] 00029
3 realloc [call site] 00030
2 vector_get [function] [call site] 00031
2 add_punycode_if_needed [function] [call site] 00032
3 str_is_ascii [function] [call site] 00033
3 psl_idna_toASCII [function] [call site] 00034
4 domain_to_punycode [function] [call site] 00035
5 strchr [call site] 00036
5 strlen [call site] 00037
5 mem_is_ascii [function] [call site] 00038
5 utf8_to_utf32 [function] [call site] 00039
5 punycode_encode [function] [call site] 00040
6 encode_digit [function] [call site] 00041
6 encode_digit [function] [call site] 00042
4 psl_strdup [function] [call site] 00044
5 strlen [call site] 00045
5 strcpy [call site] 00046
3 strcmp [call site] 00047
3 strlen [call site] 00048
3 suffix_init [function] [call site] 00049
3 vector_add [function] [call site] 00050
3 vector_get [function] [call site] 00051
2 fgets [call site] 00052
2 vector_sort [function] [call site] 00053
3 qsort [call site] 00054
2 psl_idna_close [function] [call site] 00055
2 psl_free [function] [call site] 00056
3 vector_free [function] [call site] 00057
1 psl_is_public_suffix [function] [call site] 00058
2 is_public_suffix [function] [call site] 00059
3 psl_idna_open [function] [call site] 00060
3 psl_idna_toASCII [function] [call site] 00061
3 strlen [call site] 00062
3 psl_idna_close [function] [call site] 00063
3 LookupStringInFixedSet [function] [call site] 00064
4 GetNextOffset [function] [call site] 00065
4 IsMatch [function] [call site] 00067
5 IsMatchUnchecked [function] [call site] 00068
6 GetMultibyteLength [function] [call site] 00069
4 NextPos [function] [call site] 00070
5 GetMultibyteLength [function] [call site] 00071
5 GetMultibyteLength [function] [call site] 00072
4 GetReturnValue [function] [call site] 00076
4 IsEndCharMatch [function] [call site] 00077
5 IsMatchUnchecked [function] [call site] 00078
3 strchr [call site] 00080
3 strlen [call site] 00081
3 LookupStringInFixedSet [function] [call site] 00082
3 vector_get [function] [call site] 00083
3 vector_find [function] [call site] 00084
3 vector_get [function] [call site] 00085
3 strchr [call site] 00086
3 strlen [call site] 00087
3 vector_find [function] [call site] 00088
3 vector_get [function] [call site] 00089
1 psl_is_public_suffix [function] [call site] 00090
1 psl_suffix_wildcard_count [function] [call site] 00091
1 psl_suffix_exception_count [function] [call site] 00092
1 psl_suffix_count [function] [call site] 00093
1 fclose [call site] 00095
1 psl_latest [function] [call site] 00096
2 insert_file [function] [call site] 00097
3 stat [call site] 00098
2 insert_file [function] [call site] 00099
2 insert_file [function] [call site] 00100
2 psl_load_file [function] [call site] 00101
3 fopen [call site] 00102
3 psl_load_fp [function] [call site] 00103
3 fclose [call site] 00104
2 psl_builtin [function] [call site] 00105