Fuzz introspector: fuzz_obconversion_smiles
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
7 32 15 :

['std::__1::vector >::end[abi:ne180100]()', 'std::__1::vector >::clear[abi:ne180100]()', 'bool std::__1::operator!=[abi:ne180100] (std::__1::__wrap_iter const&, std::__1::__wrap_iter const&)', 'operator delete[](void*)', 'OpenBabel::OBAtom::SetVector()', 'OpenBabel::OBBase::GetData(unsigned int)', 'OpenBabel::OBBase::DeleteData(unsigned int)', 'OpenBabel::OBAtom::ClearCoordPtr()', 'std::__1::__wrap_iter ::__wrap_iter[abi:ne180100]()', 'OpenBabel::OBMol::NextAtom(std::__1::__wrap_iter &)', 'OpenBabel::OBMol::BeginAtom(std::__1::__wrap_iter &)', 'std::__1::vector >::begin[abi:ne180100]()', 'std::__1::__wrap_iter ::__wrap_iter[abi:ne180100]()', 'std::__1::__wrap_iter ::operator*[abi:ne180100]() const', 'std::__1::__wrap_iter ::operator++[abi:ne180100]()']

7 32 OpenBabel::OBMol::BeginModify() call site: 00000 /src/openbabel/src/mol.cpp:1488
2 2 1 :

['OpenBabel::vector3::Set(double, double, double)']

2 2 OpenBabel::OBAtom::GetVector() call site: 00000 /src/openbabel/src/atom.cpp:378
0 300 5 :

['std::__1::vector >::operator=[abi:ne180100](std::__1::vector > const&)', 'std::__1::vector >::~vector[abi:ne180100]()', 'OpenBabel::OBRing::GetParent()', 'OpenBabel::visitRing(OpenBabel::OBMol*, OpenBabel::OBRing*, std::__1::vector >&, std::__1::vector >&)', 'std::__1::vector >::vector[abi:ne180100]()']

4 304 OpenBabel::OBRingSearch::RemoveRedundant(int) call site: 00000 /src/openbabel/src/ring.cpp:335
0 116 3 :

['_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'OpenBabel::OBMessageHandler::ThrowError(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, OpenBabel::obMessageLevel, OpenBabel::errorQualifier)']

0 335 OpenBabel::OBMol::FindRingAtomsAndBonds() call site: 00000 /src/openbabel/src/ring.cpp:574
0 116 3 :

['std::__1::basic_string , std::__1::allocator >::~basic_string()', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'OpenBabel::OBMessageHandler::ThrowError(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, OpenBabel::obMessageLevel, OpenBabel::errorQualifier)']

0 122 OpenBabel::OBMol::Clear() call site: 00000 /src/openbabel/src/mol.cpp:1440
0 116 3 :

['_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'OpenBabel::OBMessageHandler::ThrowError(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, OpenBabel::obMessageLevel, OpenBabel::errorQualifier)']

0 116 OpenBabel::OBMol::EndModify(bool) call site: 00000 /src/openbabel/src/mol.cpp:1518
0 116 3 :

['_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'OpenBabel::OBMessageHandler::ThrowError(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, OpenBabel::obMessageLevel, OpenBabel::errorQualifier)']

0 116 OpenBabel::OBMol::AddBond(int,int,int,int,int) call site: 00000 /src/openbabel/src/mol.cpp:2536
0 32 1 :

['OpenBabel::OBPlugin::LoadAllPlugins()']

0 62 OpenBabel::OBPlugin::GetTypeMap(charconst*) call site: 00000 /src/openbabel/src/plugin.cpp:34
0 6 1 :

['OpenBabel::OBBase::DeleteData(std::__1::basic_string , std::__1::allocator > const&)']

0 1501 OpenBabel::OBMol::FindSSSR() call site: 00000 /src/openbabel/src/ring.cpp:100
0 0 None 7 10 OpenBabel::OBMol::AddBond(int,int,int,int,int) call site: 00000 /src/openbabel/src/mol.cpp:2523
0 0 None 4 122 OpenBabel::OBCisTransStereo::SetConfig(OpenBabel::OBCisTransStereo::Configconst&) call site: 00000 /src/openbabel/src/stereo/cistrans.cpp:99
0 0 None 4 122 OpenBabel::OBCisTransStereo::SetConfig(OpenBabel::OBCisTransStereo::Configconst&) call site: 00000 /src/openbabel/src/stereo/cistrans.cpp:105

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 OpenBabel::OBConversion::OBConversion(std::__1::basic_istream<char, std::__1::char_traits<char> >*, std::__1::basic_ostream<char, std::__1::char_traits<char> >*) [function] [call site] 00001
2 OpenBabel::OBConversion::SetInStream(std::__1::basic_istream<char, std::__1::char_traits<char> >*, bool) [function] [call site] 00002
3 OpenBabel::OBConversion::IsOption(char const*, OpenBabel::OBConversion::Option_type) [function] [call site] 00003
3 zlib_stream::basic_zip_istream<char, std::__1::char_traits<char> >::basic_zip_istream(std::__1::basic_istream<char, std::__1::char_traits<char> >&, int, unsigned long, unsigned long) [function] [call site] 00004
4 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::basic_unzip_streambuf(std::__1::basic_istream<char, std::__1::char_traits<char> >&, int, unsigned long, unsigned long) [function] [call site] 00005
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::initialize(int) [function] [call site] 00006
6 inflateInit2_ [call site] 00007
4 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_zerr() const [function] [call site] 00008
4 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::check_header() [function] [call site] 00009
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_zip_stream() [function] [call site] 00010
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00011
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00012
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00013
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00014
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00015
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00016
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00017
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00018
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00019
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00020
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00021
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00022
5 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::get_istream() [function] [call site] 00023
4 zlib_stream::basic_unzip_streambuf<char, std::__1::char_traits<char> >::~basic_unzip_streambuf() [function] [call site] 00024
5 inflateEnd [call site] 00025
5 __clang_call_terminate [call site] 00026
6 __cxa_begin_catch [call site] 00027
3 OpenBabel::FilteringInputStream<OpenBabel::LineEndingExtractor>::FilteringInputStream(std::__1::basic_istream<char, std::__1::char_traits<char> >&) [function] [call site] 00028
4 OpenBabel::FilteringInputStreambuf<OpenBabel::LineEndingExtractor>::FilteringInputStreambuf(std::__1::basic_istream<char, std::__1::char_traits<char> >*) [function] [call site] 00029
2 OpenBabel::OBConversion::SetOutStream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*, bool) [function] [call site] 00030
3 OpenBabel::OBConversion::IsOption(char const*, OpenBabel::OBConversion::Option_type) [function] [call site] 00031
3 zlib_stream::basic_zip_ostream<char, std::__1::char_traits<char> >::basic_zip_ostream(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, int, zlib_stream::EStrategy, int, int, unsigned long) [function] [call site] 00032
4 zlib_stream::basic_zip_streambuf<char, std::__1::char_traits<char> >::basic_zip_streambuf(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, zlib_stream::EStrategy, int, int, unsigned long) [function] [call site] 00033
5 deflateInit2_ [call site] 00034
4 zlib_stream::basic_zip_ostream<char, std::__1::char_traits<char> >::add_header() [function] [call site] 00035
5 zlib_stream::basic_zip_streambuf<char, std::__1::char_traits<char> >::get_ostream() const [function] [call site] 00036
4 zlib_stream::basic_zip_streambuf<char, std::__1::char_traits<char> >::~basic_zip_streambuf() [function] [call site] 00037
5 zlib_stream::basic_zip_streambuf<char, std::__1::char_traits<char> >::flush() [function] [call site] 00038
6 crc32 [call site] 00039
6 deflate [call site] 00040
5 deflateEnd [call site] 00041
5 __clang_call_terminate [call site] 00042
2 OpenBabel::OBConversion::RegisterOptionParam(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, OpenBabel::OBFormat*, int, OpenBabel::OBConversion::Option_type) [function] [call site] 00043
3 OpenBabel::OBConversion::OptionParamArray(OpenBabel::OBConversion::Option_type) [function] [call site] 00044
4 __cxa_guard_acquire [call site] 00045
4 __cxa_atexit [call site] 00046
4 __cxx_global_array_dtor [function] [call site] 00047
4 __cxa_guard_release [call site] 00048
3 OpenBabel::OBConversion::OptionParamArray(OpenBabel::OBConversion::Option_type) [function] [call site] 00049
3 OpenBabel::OBMessageHandler::ThrowError(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> > const&, OpenBabel::obMessageLevel, OpenBabel::errorQualifier) [function] [call site] 00050
4 OpenBabel::OBError::OBError(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> > const&, 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> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenBabel::obMessageLevel) [function] [call site] 00051
4 OpenBabel::OBError::OBError(OpenBabel::OBError const&) [function] [call site] 00052
4 OpenBabel::OBMessageHandler::ThrowError(OpenBabel::OBError, OpenBabel::errorQualifier) [function] [call site] 00053
5 OpenBabel::OBError::GetLevel() const [function] [call site] 00054
5 OpenBabel::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, OpenBabel::OBError const&) [function] [call site] 00055
6 OpenBabel::OBError::message() const [function] [call site] 00056
5 OpenBabel::OBError::GetLevel() const [function] [call site] 00057
4 OpenBabel::OBError::~OBError() [function] [call site] 00058
4 OpenBabel::OBError::~OBError() [function] [call site] 00059
3 OpenBabel::OBConversion::OptionParamArray(OpenBabel::OBConversion::Option_type) [function] [call site] 00060
2 OpenBabel::OBConversion::RegisterOptionParam(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, OpenBabel::OBFormat*, int, OpenBabel::OBConversion::Option_type) [function] [call site] 00061
1 OpenBabel::OBMol::OBMol() [function] [call site] 00062
2 OpenBabel::OBBase::OBBase() [function] [call site] 00063
2 OpenBabel::OBBase::~OBBase() [function] [call site] 00064
1 OpenBabel::OBConversion::SetInFormat(char const*, bool) [function] [call site] 00065
2 OpenBabel::OBConversion::FindFormat(char const*) [function] [call site] 00066
3 OpenBabel::OBFormat::FindType(char const*) [function] [call site] 00067
4 OpenBabel::OBFormat::Default() [function] [call site] 00068
4 OpenBabel::OBFormat::Map() [function] [call site] 00069
5 __cxa_guard_acquire [call site] 00070
5 __cxa_atexit [call site] 00071
5 __cxa_guard_release [call site] 00072
4 OpenBabel::OBPlugin::BaseFindType(std::__1::map<char const*, OpenBabel::OBPlugin*, OpenBabel::CharPtrLess, std::__1::allocator<std::__1::pair<char const* const, OpenBabel::OBPlugin*> > >&, char const*) [function] [call site] 00073
5 OpenBabel::OBPlugin::LoadAllPlugins() [function] [call site] 00074
6 OpenBabel::OBPlugin::GetPlugin(char const*, char const*) [function] [call site] 00075
7 OpenBabel::OBPlugin::GetTypeMap(char const*) [function] [call site] 00076
8 OpenBabel::OBPlugin::LoadAllPlugins() [function] [call site] 00077
9 __cxa_guard_acquire [call site] 00078
9 __cxa_atexit [call site] 00079
9 __cxa_guard_release [call site] 00080
9 __cxa_guard_abort [call site] 00081
8 OpenBabel::OBPlugin::PluginMap() [function] [call site] 00082
9 __cxa_guard_acquire [call site] 00083
9 __cxa_atexit [call site] 00084
9 __cxa_guard_release [call site] 00085
8 OpenBabel::OBPlugin::PluginMap() [function] [call site] 00086
8 OpenBabel::OBPlugin::PluginMap() [function] [call site] 00087
7 OpenBabel::OBPlugin::BaseFindType(std::__1::map<char const*, OpenBabel::OBPlugin*, OpenBabel::CharPtrLess, std::__1::allocator<std::__1::pair<char const* const, OpenBabel::OBPlugin*> > >&, char const*) [function] [call site] 00088
7 OpenBabel::OBPlugin::LoadAllPlugins() [function] [call site] 00089
7 OpenBabel::OBPlugin::PluginMap() [function] [call site] 00090
7 OpenBabel::OBPlugin::BaseFindType(std::__1::map<char const*, OpenBabel::OBPlugin*, OpenBabel::CharPtrLess, std::__1::allocator<std::__1::pair<char const* const, OpenBabel::OBPlugin*> > >&, char const*) [function] [call site] 00091
1 abort [call site] 00092
1 OpenBabel::OBConversion::ReadString(OpenBabel::OBBase*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) [function] [call site] 00093
2 OpenBabel::OBConversion::SetInStream(std::__1::basic_istream<char, std::__1::char_traits<char> >*, bool) [function] [call site] 00094
2 OpenBabel::OBConversion::Read(OpenBabel::OBBase*, std::__1::basic_istream<char, std::__1::char_traits<char> >*) [function] [call site] 00095
3 zlib_stream::isGZip(std::__1::basic_istream<char, std::__1::char_traits<char> >&) [function] [call site] 00096
3 OpenBabel::OBConversion::SetInStream(std::__1::basic_istream<char, std::__1::char_traits<char> >*, bool) [function] [call site] 00097
3 OpenBabel::OBLocale::SetLocale() [function] [call site] 00098
4 setlocale [call site] 00099
4 strdup [call site] 00100
4 setlocale [call site] 00101
3 OpenBabel::OBConversion::SetStartAndEnd() [function] [call site] 00102
4 OpenBabel::OBConversion::IsOption(char const*, OpenBabel::OBConversion::Option_type) [function] [call site] 00103
4 atoi [function] [call site] 00104
5 strtol [call site] 00105
4 OpenBabel::OBConversion::IsOption(char const*, OpenBabel::OBConversion::Option_type) [function] [call site] 00106
3 OpenBabel::OBLocale::RestoreLocale() [function] [call site] 00108
4 setlocale [call site] 00109
3 __dynamic_cast [call site] 00110
1 OpenBabel::OBMol::~OBMol() [function] [call site] 00111
2 OpenBabel::OBMol::BeginAtom(std::__1::__wrap_iter<OpenBabel::OBAtom**>&) [function] [call site] 00112
2 OpenBabel::OBMol::NextAtom(std::__1::__wrap_iter<OpenBabel::OBAtom**>&) [function] [call site] 00113
2 OpenBabel::OBMol::BeginBond(std::__1::__wrap_iter<OpenBabel::OBBond**>&) [function] [call site] 00114
2 OpenBabel::OBMol::NextBond(std::__1::__wrap_iter<OpenBabel::OBBond**>&) [function] [call site] 00115
2 OpenBabel::OBMol::BeginResidue(std::__1::__wrap_iter<OpenBabel::OBResidue**>&) [function] [call site] 00116
2 OpenBabel::OBMol::NextResidue(std::__1::__wrap_iter<OpenBabel::OBResidue**>&) [function] [call site] 00117
2 OpenBabel::OBBase::~OBBase() [function] [call site] 00118
2 __clang_call_terminate [call site] 00119
1 OpenBabel::OBConversion::~OBConversion() [function] [call site] 00120
2 OpenBabel::OBConversion::SetInStream(std::__1::basic_istream<char, std::__1::char_traits<char> >*, bool) [function] [call site] 00121
2 OpenBabel::OBConversion::SetOutStream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*, bool) [function] [call site] 00122
2 __clang_call_terminate [call site] 00123