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
285 285 5 :

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

289 289 OpenBabel::OBRingSearch::RemoveRedundant(int) call site: 00000 /src/openbabel/src/ring.cpp:335
7 32 15 :

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

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

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

6 1420 OpenBabel::OBMol::FindSSSR() call site: 00000 /src/openbabel/src/ring.cpp:100
2 2 1 :

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

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

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

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

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

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

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

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

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

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

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

0 65 OpenBabel::OBPlugin::GetTypeMap(charconst*) call site: 00000 /src/openbabel/src/plugin.cpp:34
0 0 None 7 10 OpenBabel::OBMol::AddBond(int,int,int,int,int) call site: 00000 /src/openbabel/src/mol.cpp:2521
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 >*, std::__1::basic_ostream >*) [function] [call site] 00001
2 OpenBabel::OBConversion::SetInStream(std::__1::basic_istream >*, bool) [function] [call site] 00002
3 OpenBabel::FilteringInputStream ::FilteringInputStream(std::__1::basic_istream >&) [function] [call site] 00003
4 OpenBabel::FilteringInputStreambuf ::FilteringInputStreambuf(std::__1::basic_istream >*) [function] [call site] 00004
2 OpenBabel::OBConversion::SetOutStream(std::__1::basic_ostream >*, bool) [function] [call site] 00005
2 OpenBabel::OBConversion::RegisterOptionParam(std::__1::basic_string , std::__1::allocator >, OpenBabel::OBFormat*, int, OpenBabel::OBConversion::Option_type) [function] [call site] 00006
3 OpenBabel::OBConversion::OptionParamArray(OpenBabel::OBConversion::Option_type) [function] [call site] 00007
4 __cxa_guard_acquire [call site] 00008
4 __cxx_global_array_dtor [function] [call site] 00009
3 OpenBabel::OBConversion::OptionParamArray(OpenBabel::OBConversion::Option_type) [function] [call site] 00010
3 OpenBabel::OBMessageHandler::ThrowError(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, OpenBabel::obMessageLevel, OpenBabel::errorQualifier) [function] [call site] 00011
4 OpenBabel::OBError::OBError(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, OpenBabel::obMessageLevel) [function] [call site] 00012
4 OpenBabel::OBError::OBError(OpenBabel::OBError const&) [function] [call site] 00013
4 OpenBabel::OBMessageHandler::ThrowError(OpenBabel::OBError, OpenBabel::errorQualifier) [function] [call site] 00014
5 OpenBabel::OBError::GetLevel() const [function] [call site] 00015
5 OpenBabel::operator<<(std::__1::basic_ostream >&, OpenBabel::OBError const&) [function] [call site] 00016
6 OpenBabel::OBError::message() const [function] [call site] 00017
5 OpenBabel::OBError::GetLevel() const [function] [call site] 00018
4 OpenBabel::OBError::~OBError() [function] [call site] 00019
3 OpenBabel::OBConversion::OptionParamArray(OpenBabel::OBConversion::Option_type) [function] [call site] 00020
2 OpenBabel::OBConversion::RegisterOptionParam(std::__1::basic_string , std::__1::allocator >, OpenBabel::OBFormat*, int, OpenBabel::OBConversion::Option_type) [function] [call site] 00021
1 OpenBabel::OBMol::OBMol() [function] [call site] 00022
2 OpenBabel::OBBase::OBBase() [function] [call site] 00023
2 OpenBabel::OBBase::~OBBase() [function] [call site] 00024
1 OpenBabel::OBConversion::SetInFormat(char const*, bool) [function] [call site] 00025
2 OpenBabel::OBConversion::FindFormat(char const*) [function] [call site] 00026
3 OpenBabel::OBFormat::FindType(char const*) [function] [call site] 00027
4 OpenBabel::OBFormat::Default() [function] [call site] 00028
4 OpenBabel::OBPlugin::BaseFindType(std::__1::map > >&, char const*) [function] [call site] 00029
5 OpenBabel::OBPlugin::LoadAllPlugins() [function] [call site] 00030
6 OpenBabel::OBPlugin::GetPlugin(char const*, char const*) [function] [call site] 00031
7 OpenBabel::OBPlugin::GetTypeMap(char const*) [function] [call site] 00032
8 OpenBabel::OBPlugin::LoadAllPlugins() [function] [call site] 00033
9 __cxa_guard_acquire [call site] 00034
8 OpenBabel::OBPlugin::PluginMap() [function] [call site] 00035
9 __cxa_guard_acquire [call site] 00036
8 OpenBabel::OBPlugin::PluginMap() [function] [call site] 00037
8 OpenBabel::OBPlugin::PluginMap() [function] [call site] 00038
7 OpenBabel::OBPlugin::LoadAllPlugins() [function] [call site] 00039
7 OpenBabel::OBPlugin::PluginMap() [function] [call site] 00040
7 OpenBabel::OBPlugin::BaseFindType(std::__1::map > >&, char const*) [function] [call site] 00041
1 abort [call site] 00042
1 OpenBabel::OBConversion::ReadString(OpenBabel::OBBase*, std::__1::basic_string , std::__1::allocator >) [function] [call site] 00043
2 OpenBabel::OBConversion::SetInStream(std::__1::basic_istream >*, bool) [function] [call site] 00044
2 OpenBabel::OBConversion::Read(OpenBabel::OBBase*, std::__1::basic_istream >*) [function] [call site] 00045
3 OpenBabel::OBConversion::SetInStream(std::__1::basic_istream >*, bool) [function] [call site] 00046
3 OpenBabel::OBLocale::SetLocale() [function] [call site] 00047
4 setlocale [call site] 00048
4 setlocale [call site] 00049
3 OpenBabel::OBConversion::SetStartAndEnd() [function] [call site] 00050
4 OpenBabel::OBConversion::IsOption(char const*, OpenBabel::OBConversion::Option_type) [function] [call site] 00051
4 atoi [function] [call site] 00052
5 strtol [call site] 00053
4 OpenBabel::OBConversion::IsOption(char const*, OpenBabel::OBConversion::Option_type) [function] [call site] 00054
3 OpenBabel::OBLocale::RestoreLocale() [function] [call site] 00056
4 setlocale [call site] 00057
3 __dynamic_cast [call site] 00058
1 OpenBabel::OBMol::~OBMol() [function] [call site] 00059
2 OpenBabel::OBMol::BeginAtom(std::__1::__wrap_iter &) [function] [call site] 00060
2 OpenBabel::OBMol::BeginBond(std::__1::__wrap_iter &) [function] [call site] 00061
2 OpenBabel::OBMol::BeginResidue(std::__1::__wrap_iter &) [function] [call site] 00062
2 OpenBabel::OBBase::~OBBase() [function] [call site] 00063
2 __clang_call_terminate [call site] 00064
3 __cxa_begin_catch [call site] 00065
1 OpenBabel::OBConversion::~OBConversion() [function] [call site] 00066
2 OpenBabel::OBConversion::SetInStream(std::__1::basic_istream >*, bool) [function] [call site] 00067
2 OpenBabel::OBConversion::SetOutStream(std::__1::basic_ostream >*, bool) [function] [call site] 00068
2 __clang_call_terminate [call site] 00069