Fuzz introspector: fuzz_obconversion_sdf
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
25721 27287 44 :

['OpenBabel::OBMol::GetBond(OpenBabel::OBAtom*, OpenBabel::OBAtom*) const', 'OpenBabel::OBMol::~OBMol()', 'OpenBabel::OBMol::operator+=(OpenBabel::OBMol const&)', 'std::__1::__wrap_iter ::operator*() const', 'std::__1::basic_string , std::__1::allocator >::operator=(std::__1::basic_string , std::__1::allocator > const&)', 'OpenBabel::OBAtom::GetVector()', 'OpenBabel::OBMol::DeleteAtom(OpenBabel::OBAtom*, bool)', 'std::__1::vector , std::__1::allocator > >::empty() const', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'OpenBabel::OBAtom::GetId() const', 'std::__1::pair ::type, std::__1::__unwrap_ref_decay ::type> std::__1::make_pair (OpenBabel::OBAtom*&, unsigned int&&)', 'OpenBabel::OBBuilder::Build(OpenBabel::OBMol&, bool)', 'OpenBabel::OBMol::NumAtoms() const', 'OpenBabel::groupRedraw(OpenBabel::OBMol*, int, int, bool)', 'OpenBabel::OBMol::SetIsPatternStructure(bool)', 'OpenBabel::OBAtom::SetVector(OpenBabel::vector3 const&)', 'OpenBabel::OBMol::OBMol()', 'OpenBabel::OBConversion::~OBConversion()', 'OpenBabel::OBMol::NumBonds() const', 'OpenBabel::OBBase::CloneData(OpenBabel::OBGenericData*)', 'OpenBabel::OBMol::SetDimension(unsigned short)', 'OpenBabel::OBBond::GetFlags() const', 'OpenBabel::OBBuilder::Connect(OpenBabel::OBMol&, int, int, OpenBabel::vector3&, int)', 'OpenBabel::OBAtom::BeginNbrAtom(std::__1::__wrap_iter &)', 'OpenBabel::OBMol::GetAtom(int) const', 'OpenBabel::OBBond::GetBondOrder() const', 'std::__1::vector , std::__1::allocator > >::pop_back()', 'std::__1::vector , std::__1::allocator > >::~vector()', 'std::__1::__map_iterator , std::__1::allocator >, OpenBabel::AliasData::AliasItem>, std::__1::__tree_node , std::__1::allocator >, OpenBabel::AliasData::AliasItem>, void*>*, long> >::operator->() const', 'std::__1::vector , std::__1::allocator > >::back()', 'OpenBabel::OBConversion::SetInFormat(char const*, bool)', 'OpenBabel::OBBuilder::OBBuilder()', 'std::__1::basic_string , std::__1::allocator > std::__1::operator+ , std::__1::allocator >(char, std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::vector , std::__1::allocator > >::push_back(std::__1::pair &&)', 'std::__1::vector >::push_back(unsigned long&&)', 'OpenBabel::OBConversion::ReadString(OpenBabel::OBBase*, std::__1::basic_string , std::__1::allocator >)', 'OpenBabel::OBConversion::OBConversion(std::__1::basic_istream >*, std::__1::basic_ostream >*)', 'OpenBabel::OBAtom::GetIdx() const', 'OpenBabel::OBMol::Has3D()', 'std::__1::vector , std::__1::allocator > >::vector()', 'OpenBabel::OBMol::Has2D(bool)', 'std::__1::__wrap_iter ::__wrap_iter()', 'OpenBabel::OBMol::AddBond(int, int, int, int, int)', 'OpenBabel::OBAtom::NextNbrAtom(std::__1::__wrap_iter &)']

25721 27287 OpenBabel::AliasData::FromNameLookup(OpenBabel::OBMol&,unsignedint) call site: 00000 /src/openbabel/src/alias.cpp:127
19386 19523 24 :

['OpenBabel::OBCisTransStereo::Config::~Config()', 'OpenBabel::OBBond::GetId() const', 'OpenBabel::OBTetrahedralStereo::GetConfig(OpenBabel::OBStereo::Winding, OpenBabel::OBStereo::View) const', 'OpenBabel::OBStereoFacade::GetTetrahedralStereo(unsigned long)', 'OpenBabel::OBAtom::GetId() const', 'std::__1::__map_const_iterator , std::__1::__tree_node , void*>*, long> >::__map_const_iterator(std::__1::__map_iterator , std::__1::__tree_node , void*>*, long> >)', 'OpenBabel::OBCisTransStereo::GetConfig(OpenBabel::OBStereo::Shape) const', 'OpenBabel::StereoFrom3D(OpenBabel::OBMol*, bool)', 'std::__1::__map_const_iterator , std::__1::__tree_node , void*>*, long> >::__map_const_iterator()', 'OpenBabel::OBTetrahedralStereo::Config::~Config()', 'std::__1::__map_const_iterator , std::__1::__tree_node , void*>*, long> >::operator++()', 'std::__1::vector >::size() const', 'OpenBabel::OBMol::GetAtom(int) const', 'OpenBabel::OBTetrahedralStereo::SetConfig(OpenBabel::OBTetrahedralStereo::Config const&)', 'std::__1::vector >::operator[](unsigned long)', 'OpenBabel::OBBond::GetBondOrder() const', 'OpenBabel::OBStereoFacade::GetCisTransStereo(unsigned long)', 'OpenBabel::OBStereoFacade::~OBStereoFacade()', 'std::__1::operator!=(std::__1::__map_const_iterator , std::__1::__tree_node , void*>*, long> > const&, std::__1::__map_const_iterator , std::__1::__tree_node , void*>*, long> > const&)', 'OpenBabel::OBStereoFacade::OBStereoFacade(OpenBabel::OBMol*, bool)', 'std::__1::__map_const_iterator , std::__1::__tree_node , void*>*, long> >::operator->() const', 'OpenBabel::OBCisTransStereo::SetConfig(OpenBabel::OBCisTransStereo::Config const&)', 'std::__1::map , std::__1::allocator > >::begin()', 'std::__1::map , std::__1::allocator > >::end()']

19386 19803 OpenBabel::MDLFormat::ReadMolecule(OpenBabel::OBBase*,OpenBabel::OBConversion*) call site: 00000 /src/openbabel/src/formats/mdlformat.cpp:855
6334 6334 1 :

['OpenBabel::OBSmartsMatcher::FastSingleMatch(OpenBabel::OBMol&, OpenBabel::Pattern const*, std::__1::vector >, std::__1::allocator > > >&)']

13236 13913 OpenBabel::OBSmartsMatcher::match(OpenBabel::OBMol&,OpenBabel::Patternconst*,std::__1::vector >,std::__1::allocator >>>&,bool) call site: 00000 /src/openbabel/src/parsmart.cpp:2006
6278 6278 1 :

['OpenBabel::StereoFrom2D(OpenBabel::OBMol*, std::__1::map , std::__1::allocator > >*, bool)']

6278 6558 OpenBabel::MDLFormat::ReadMolecule(OpenBabel::OBBase*,OpenBabel::OBConversion*) call site: 00000 /src/openbabel/src/formats/mdlformat.cpp:894
1816 2096 9 :

['std::__1::__wrap_iter ::operator*() const', 'OpenBabel::OBMol::NumAtoms() const', 'OpenBabel::OBMol::GetBond(int, int) const', 'OpenBabel::OBAtom::BeginNbrAtom(std::__1::__wrap_iter &)', 'OpenBabel::OBMol::GetAtom(int) const', 'OpenBabel::OBSmartsMatcher::EvalBondExpr(OpenBabel::_BondExpr*, OpenBabel::OBBond*)', 'OpenBabel::OBAtom::NextNbrAtom(std::__1::__wrap_iter &)', 'std::__1::vector >, std::__1::allocator > > >::push_back(std::__1::vector > const&)', 'std::__1::__wrap_iter ::__wrap_iter()']

1816 21006 OpenBabel::OBSSMatch::Match(std::__1::vector >,std::__1::allocator >>>&,int) call site: 00000 /src/openbabel/src/parsmart.cpp:2330
147 147 1 :

['OpenBabel::OBSmartsPattern::SMARTSError(OpenBabel::Pattern*)']

147 147 OpenBabel::OBSmartsPattern::ParseSMARTSString(char*) call site: 00000 /src/openbabel/src/parsmart.cpp:1690
11 11 17 :

['OpenBabel::AliasData::AliasItem::~AliasItem()', 'std::__1::basic_string , std::__1::allocator >::operator[](unsigned long)', 'OpenBabel::tokenize(std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >&, std::__1::basic_string , std::__1::allocator >&, char const*, int)', 'std::__1::basic_string , std::__1::allocator >::operator=(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator >::empty() const', 'std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::size() const', 'std::__1::basic_string , std::__1::allocator >::operator=(std::__1::basic_string , std::__1::allocator >&&)', 'std::__1::basic_string , std::__1::allocator >::basic_string(std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::operator[](unsigned long)', 'std::__1::basic_istream >& std::__1::getline , std::__1::allocator >(std::__1::basic_istream >&, std::__1::basic_string , std::__1::allocator >&)', 'std::__1::map , std::__1::allocator >, OpenBabel::AliasData::AliasItem, std::__1::less , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > const, OpenBabel::AliasData::AliasItem> > >::operator[](std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::basic_string , std::__1::allocator >::basic_string()', 'OpenBabel::AliasData::AliasItem::operator=(OpenBabel::AliasData::AliasItem const&)', 'std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::vector()', 'std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::~vector()', 'OpenBabel::AliasData::AliasItem::AliasItem()', 'std::__1::basic_ios >::operator bool() const']

11 11 OpenBabel::AliasData::LoadFile(std::__1::map ,std::__1::allocator >,OpenBabel::AliasData::AliasItem,std::__1::less ,std::__1::allocator >>,std::__1::allocator ,std::__1::allocator >const,OpenBabel::AliasData::AliasItem>>>&) call site: 00000 /src/openbabel/src/alias.cpp:226
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
2 65 2 :

['OpenBabel::BuildBondNot(OpenBabel::_BondExpr*)', 'OpenBabel::OBSmartsPattern::ParseBondExpr(int)']

2 65 OpenBabel::OBSmartsPattern::ParseBondExpr(int) call site: 00000 /src/openbabel/src/parsmart.cpp:1323
2 9 5 :

['OpenBabel::OBAtom::InsertBond(std::__1::__wrap_iter &, OpenBabel::OBBond*)', 'std::__1::__wrap_iter ::operator+=(long)', 'OpenBabel::OBAtom::GetExplicitDegree() const', 'OpenBabel::OBAtom::BeginNbrAtom(std::__1::__wrap_iter &)', 'std::__1::__wrap_iter ::__wrap_iter()']

2 13 OpenBabel::OBMol::AddBond(int,int,int,int,int) call site: 00000 /src/openbabel/src/mol.cpp:2558
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 4 :

['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 >::operator+=(char const*)', 'std::__1::basic_string , std::__1::allocator >::operator+=(std::__1::basic_string , std::__1::allocator > const&)']

0 116 OpenBabel::OBGlobalDataBase::Init() call site: 00000 /src/openbabel/src/data.cpp:724

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