Fuzz introspector: fuzz_target_yahttp
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
10 10 2 :

['std::__1::__wrap_iter ::operator*() const', 'toupper']

10 10 YaHTTP::Utility::iequals(std::__1::basic_string ,std::__1::allocator >const&,std::__1::basic_string ,std::__1::allocator >const&,unsignedlong) call site: 00000 /src/pdns/pdns/../ext/yahttp/yahttp/utility.hpp:414
0 60 3 :

['std::__1::map , std::__1::allocator >, std::__1::basic_string , std::__1::allocator >, YaHTTP::ASCIICINullSafeComparator, std::__1::allocator , std::__1::allocator > const, std::__1::basic_string , std::__1::allocator > > > >::~map()', 'std::__1::map , std::__1::allocator >, std::__1::basic_string , std::__1::allocator >, YaHTTP::ASCIICINullSafeComparator, std::__1::allocator , std::__1::allocator > const, std::__1::basic_string , std::__1::allocator > > > >::operator=(std::__1::map , std::__1::allocator >, std::__1::basic_string , std::__1::allocator >, YaHTTP::ASCIICINullSafeComparator, std::__1::allocator , std::__1::allocator > const, std::__1::basic_string , std::__1::allocator > > > >&&)', 'YaHTTP::Utility::parseUrlParameters(std::__1::basic_string , std::__1::allocator >)']

0 60 YaHTTP::AsyncLoader ::finalize() call site: 00000 /src/pdns/pdns/../ext/yahttp/yahttp/reqresp.hpp:333

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 YaHTTP::AsyncRequestLoader::AsyncRequestLoader() [function] [call site] 00001
2 YaHTTP::AsyncLoader ::AsyncLoader() [function] [call site] 00002
1 YaHTTP::Request::Request() [function] [call site] 00003
2 YaHTTP::HTTPBase::HTTPBase() [function] [call site] 00004
3 YaHTTP::URL::URL() [function] [call site] 00005
4 YaHTTP::URL::initialize() [function] [call site] 00006
3 YaHTTP::CookieJar::CookieJar() [function] [call site] 00007
3 YaHTTP::HTTPBase::initialize() [function] [call site] 00008
4 YaHTTP::HTTPBase::SendBodyRender::SendBodyRender() [function] [call site] 00009
4 YaHTTP::URL::URL(char const*) [function] [call site] 00010
5 YaHTTP::URL::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00011
6 YaHTTP::URL::initialize() [function] [call site] 00012
6 YaHTTP::URL::parseSchema(std::__1::basic_string , std::__1::allocator > const&, unsigned long&) [function] [call site] 00013
6 YaHTTP::URL::parseUserPass(std::__1::basic_string , std::__1::allocator > const&, unsigned long&) [function] [call site] 00014
7 YaHTTP::Utility::decodeURL(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00015
8 tolower [function] [call site] 00016
9 __ctype_tolower_loc [call site] 00017
7 YaHTTP::Utility::decodeURL(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00018
6 YaHTTP::URL::parseHost(std::__1::basic_string , std::__1::allocator > const&, unsigned long&) [function] [call site] 00019
6 YaHTTP::URL::parsePath(std::__1::basic_string , std::__1::allocator > const&, unsigned long&) [function] [call site] 00020
6 YaHTTP::URL::parseParameters(std::__1::basic_string , std::__1::allocator > const&, unsigned long&) [function] [call site] 00021
6 YaHTTP::URL::parseAnchor(std::__1::basic_string , std::__1::allocator > const&, unsigned long&) [function] [call site] 00022
4 YaHTTP::CookieJar::clear() [function] [call site] 00023
3 YaHTTP::CookieJar::~CookieJar() [function] [call site] 00024
3 YaHTTP::URL::~URL() [function] [call site] 00025
1 YaHTTP::AsyncLoader ::initialize(YaHTTP::Request*) [function] [call site] 00026
1 YaHTTP::AsyncLoader ::feed(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00027
2 __cxa_allocate_exception [call site] 00028
2 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00029
3 YaHTTP::Error::Error(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00030
4 std::exception::exception() [function] [call site] 00031
4 std::exception::~exception() [call site] 00032
2 toupper [function] [call site] 00033
3 __ctype_toupper_loc [call site] 00034
2 YaHTTP::URL::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00035
2 YaHTTP::Utility::parseUrlParameters(std::__1::basic_string , std::__1::allocator >) [function] [call site] 00036
3 YaHTTP::Utility::decodeURL(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00037
3 YaHTTP::Utility::decodeURL(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00038
2 YaHTTP::isspace(char) [function] [call site] 00039
3 isspace [function] [call site] 00040
4 __ctype_b_loc [call site] 00041
2 __cxa_allocate_exception [call site] 00042
2 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00043
2 __cxa_allocate_exception [call site] 00044
2 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00045
2 YaHTTP::Utility::trim(std::__1::basic_string , std::__1::allocator >&) [function] [call site] 00046
3 YaHTTP::Utility::trimLeft(std::__1::basic_string , std::__1::allocator >&) [function] [call site] 00047
4 YaHTTP::isspace(char, std::__1::locale const&) [function] [call site] 00048
3 YaHTTP::Utility::trimRight(std::__1::basic_string , std::__1::allocator >&) [function] [call site] 00049
4 YaHTTP::isspace(char, std::__1::locale const&) [function] [call site] 00050
2 YaHTTP::isspace(char) [function] [call site] 00051
2 __cxa_allocate_exception [call site] 00052
2 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00053
2 YaHTTP::CookieJar::parseSetCookieHeader(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00055
3 YaHTTP::Cookie::Cookie() [function] [call site] 00056
4 YaHTTP::DateTime::DateTime() [function] [call site] 00057
5 YaHTTP::DateTime::initialize() [function] [call site] 00058
4 YaHTTP::DateTime::DateTime() [function] [call site] 00059
3 YaHTTP::CookieJar::keyValuePair(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator >&, std::__1::basic_string , std::__1::allocator >&) [function] [call site] 00060
4 __cxa_allocate_exception [call site] 00061
4 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00062
3 YaHTTP::Utility::decodeURL(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00063
3 YaHTTP::Utility::decodeURL(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00064
3 YaHTTP::CookieJar::keyValuePair(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator >&, std::__1::basic_string , std::__1::allocator >&) [function] [call site] 00065
3 YaHTTP::DateTime::DateTime() [function] [call site] 00066
3 YaHTTP::DateTime::parseCookie(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00067
4 strptime [call site] 00068
4 YaHTTP::isspace(char) [function] [call site] 00069
4 __cxa_allocate_exception [call site] 00070
4 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00071
4 YaHTTP::DateTime::fromTm(tm const*) [function] [call site] 00072
4 __cxa_allocate_exception [call site] 00073
4 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00074
4 __cxa_free_exception [call site] 00075
3 YaHTTP::Cookie::operator=(YaHTTP::Cookie const&) [function] [call site] 00076
3 YaHTTP::Cookie::~Cookie() [function] [call site] 00077
2 YaHTTP::CookieJar::parseCookieHeader(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00078
3 YaHTTP::Cookie::Cookie() [function] [call site] 00079
3 YaHTTP::CookieJar::keyValuePair(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator >&, std::__1::basic_string , std::__1::allocator >&) [function] [call site] 00080
3 YaHTTP::Utility::decodeURL(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00081
3 YaHTTP::Utility::decodeURL(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00082
2 atoi [function] [call site] 00083
3 strtol [call site] 00084
2 __cxa_allocate_exception [call site] 00085
2 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00086
2 __cxa_allocate_exception [call site] 00087
2 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00088
2 __cxa_allocate_exception [call site] 00089
2 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00090
2 __isoc99_sscanf [call site] 00091
2 __cxa_allocate_exception [call site] 00092
2 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00093
2 __cxa_allocate_exception [call site] 00094
2 YaHTTP::ParseError::ParseError(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00095
2 YaHTTP::AsyncLoader ::ready() [function] [call site] 00096
1 YaHTTP::AsyncLoader ::finalize() [function] [call site] 00097
2 YaHTTP::AsyncLoader ::ready() [function] [call site] 00098
2 YaHTTP::Utility::iequals(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator > const&, unsigned long) [function] [call site] 00099
2 YaHTTP::Utility::parseUrlParameters(std::__1::basic_string , std::__1::allocator >) [function] [call site] 00102
1 YaHTTP::HTTPBase::~HTTPBase() [function] [call site] 00103
2 YaHTTP::CookieJar::~CookieJar() [function] [call site] 00104
2 YaHTTP::URL::~URL() [function] [call site] 00105
1 __cxa_begin_catch [call site] 00106
1 __cxa_end_catch [call site] 00107
1 __cxa_begin_catch [call site] 00108
1 __cxa_begin_catch [call site] 00109