Fuzz introspector: base58_fuzz_tests
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
44 118 11 :

['std::__1::basic_string , std::__1::allocator >::size[abi:ne180100]() const', 'std::__1::unordered_map , std::__1::allocator >, std::__1::hash , std::__1::equal_to , std::__1::allocator , std::__1::allocator > > > >::empty[abi:ne180100]() const', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'std::__1::basic_ostream >& std::__1::operator<<[abi:ne180100] >(std::__1::basic_ostream >&, char const*)', 'el::base::utils::File::extractPathFromFilename(std::__1::basic_string , std::__1::allocator > const&, char const*)', 'std::__1::unordered_map > >, std::__1::hash , std::__1::equal_to , std::__1::allocator > > > > >::empty[abi:ne180100]() const', 'el::base::TypedConfigurations::resolveFilename(std::__1::basic_string , std::__1::allocator > const&)', 'el::base::TypedConfigurations::insertFile(el::Level, std::__1::basic_string , std::__1::allocator > const&)::$_0::operator()(el::Level) const', 'std::__1::basic_string , std::__1::allocator >::empty[abi:ne180100]() const', 'el::LevelHelper::convertToString(el::Level)', 'el::base::utils::File::createPath(std::__1::basic_string , std::__1::allocator > const&)']

44 118 el::base::TypedConfigurations::insertFile(el::Level,std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/monero/monero/external/easylogging++/easylogging++.cc:1886
14 14 13 :

['std::__1::basic_string , std::__1::allocator >::~basic_string()', 'std::__1::basic_string , std::__1::allocator >::c_str[abi:ne180100]() const', 'std::__1::pair , std::__1::allocator >&>::type, std::__1::__unwrap_ref_decay , std::__1::allocator > >::type> std::__1::make_pair[abi:ne180100] , std::__1::allocator >&, std::__1::basic_string , std::__1::allocator > >(std::__1::basic_string , std::__1::allocator >&, std::__1::basic_string , std::__1::allocator >&&)', 'el::base::utils::CommandLineArgs::hasParamWithValue(char const*) const', 'el::base::utils::CommandLineArgs::hasParam(char const*) const', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::substr[abi:ne180100](unsigned long, unsigned long) const', 'std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::push_back[abi:ne180100](std::__1::basic_string , std::__1::allocator >&&)', 'std::__1::pair , std::__1::allocator >, std::__1::basic_string , std::__1::allocator > >, void*>*> >, bool> std::__1::unordered_map , std::__1::allocator >, std::__1::basic_string , std::__1::allocator >, std::__1::hash , std::__1::allocator > >, std::__1::equal_to , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > const, std::__1::basic_string , std::__1::allocator > > > >::insert[abi:ne180100] , std::__1::allocator >, std::__1::basic_string , std::__1::allocator > >, void>(std::__1::pair , std::__1::allocator >, std::__1::basic_string , std::__1::allocator > >&&)', 'std::__1::pair , std::__1::allocator >, std::__1::basic_string , std::__1::allocator > >::~pair()', 'strstr', 'std::__1::basic_string , std::__1::allocator >::operator=[abi:ne180100](std::__1::basic_string , std::__1::allocator >&&)', 'std::__1::basic_string , std::__1::allocator >::find_first_of[abi:ne180100](char, unsigned long) const']

14 14 el::base::utils::CommandLineArgs::setArgs(int,char**) call site: 00000 /src/monero/monero/external/easylogging++/easylogging++.cc:1426
10 10 5 :

['std::__1::unordered_map , std::__1::equal_to , std::__1::allocator > >::at(el::Level const&)', '__clang_call_terminate', '__cxa_rethrow', '__cxa_end_catch', '__cxa_begin_catch']

10 10 el::base::LogFormat⪙::base::TypedConfigurations::unsafeGetConfigByRef (el::Level,std::__1::unordered_map ,std::__1::equal_to ,std::__1::allocator >>*,charconst*) call site: 00000 /src/monero/monero/external/easylogging++/easylogging++.h:2022
0 34 1 :

['el::Configurations::unsafeSet(el::Level, el::ConfigurationType, std::__1::basic_string , std::__1::allocator > const&)']

0 38 el::Configurations::unsafeSetGlobally(el::ConfigurationType,std::__1::basic_string ,std::__1::allocator >const&,bool) call site: 00000 /src/monero/monero/external/easylogging++/easylogging++.cc:650
0 3 2 :

['el::base::LogFormat::operator=(el::base::LogFormat const&)', 'std::__1::unordered_map , std::__1::equal_to , std::__1::allocator > >::at(el::Level const&)']

0 3 voidel::base::TypedConfigurations::setValue (el::Level,el::base::LogFormatconst&,std::__1::unordered_map ,std::__1::equal_to ,std::__1::allocator >>*,bool) call site: 00000 /src/monero/monero/external/easylogging++/easylogging++.h:2050
0 0 None 4 4 el::base::TypedConfigurations::getULong(std::__1::basic_string ,std::__1::allocator >) call site: 00000 /src/monero/monero/external/easylogging++/easylogging++.cc:1838
0 0 None 2 556 el::base::RegisteredLoggers::get(std::__1::basic_string ,std::__1::allocator >const&,bool) call site: 00000 /src/monero/monero/external/easylogging++/easylogging++.cc:2000
0 0 None 0 514 el::Logger::configure(el::Configurationsconst&) call site: 00000 /src/monero/monero/external/easylogging++/easylogging++.cc:748
0 0 9 :

['std::__1::shared_ptr > >::operator=[abi:ne180100](std::__1::shared_ptr > > const&)', 'std::__1::unordered_map > >, std::__1::hash , std::__1::equal_to , std::__1::allocator > > > > >::at(el::Level const&)', 'std::__1::__hash_map_iterator > > >, void*>*> >::operator->[abi:ne180100]() const', 'std::__1::unordered_map > >, std::__1::hash , std::__1::equal_to , std::__1::allocator > > > > >::find[abi:ne180100](el::Level const&)', 'std::__1::operator!=[abi:ne180100](std::__1::__hash_map_iterator > > >, void*>*> > const&, std::__1::__hash_map_iterator > > >, void*>*> > const&)', 'std::__1::unordered_map > >, std::__1::hash , std::__1::equal_to , std::__1::allocator > > > > >::end[abi:ne180100]()', 'bool std::__1::operator==[abi:ne180100] >, std::__1::basic_fstream > >(std::__1::shared_ptr > > const&, std::__1::shared_ptr > > const&)', 'std::__1::operator==[abi:ne180100](std::__1::__hash_map_iterator > > >, void*>*> > const&, std::__1::__hash_map_iterator > > >, void*>*> > const&)', 'std::__1::pair ::type, std::__1::__unwrap_ref_decay > > const&>::type> std::__1::make_pair[abi:ne180100] > > const&>(el::Level&, std::__1::shared_ptr > > const&)']

0 0 voidel::base::TypedConfigurations::setValue >>>(el::Level,std::__1::shared_ptr >>const&,std::__1::unordered_map >>,std::__1::hash ,std::__1::equal_to ,std::__1::allocator >>>>>*,bool) call site: 00000 /src/monero/monero/external/easylogging++/easylogging++.h:2039
0 0 1 :

['std::__1::basic_string , std::__1::allocator >::clear[abi:ne180100]()']

0 0 tools::base58::decode(std::__1::basic_string ,std::__1::allocator >const&,std::__1::basic_string ,std::__1::allocator >&) call site: 00000 /src/monero/monero/src/common/base58.cpp:197

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 tools::base58::decode(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) [function] [call site] 00001
2 tools::base58::(anonymous namespace)::decoded_block_sizes::operator()(unsigned long) const [function] [call site] 00002
2 tools::base58::(anonymous namespace)::decode_block(char const*, unsigned long, char*) [function] [call site] 00003
3 tools::base58::(anonymous namespace)::decoded_block_sizes::operator()(unsigned long) const [function] [call site] 00004
3 tools::base58::(anonymous namespace)::reverse_alphabet::operator()(char) const [function] [call site] 00005
3 mul128(unsigned long, unsigned long, unsigned long*) [function] [call site] 00006
4 hi_dword(unsigned long) [function] [call site] 00007
4 lo_dword(unsigned long) [function] [call site] 00008
4 hi_dword(unsigned long) [function] [call site] 00009
4 lo_dword(unsigned long) [function] [call site] 00010
3 tools::base58::(anonymous namespace)::uint_64_to_8be(unsigned long, unsigned long, unsigned char*) [function] [call site] 00011
2 tools::base58::(anonymous namespace)::decode_block(char const*, unsigned long, char*) [function] [call site] 00012
1 __cxa_begin_catch [call site] 00013
1 fprintf [call site] 00014
1 __cxa_end_catch [call site] 00015