Fuzz introspector: fuzz_parsers
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
8 8 4 :

['__cxa_throw', '__cxa_free_exception', 'std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception']

8 8 Pistache::Http::Mime::Q::Q(unsignedshort) call site: 00000 /src/pistache/src/../include/pistache/mime.h:100
8 8 4 :

['__cxa_throw', '__cxa_free_exception', 'std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception']

8 8 Pistache::Http::Header::Registry::registerHeader(std::__1::basic_string ,std::__1::allocator >const&,std::__1::function >()>) call site: 00000 /src/pistache/src/common/http_headers.cc:72
6 6 5 :

['malloc', '__cxa_throw', '__cxa_allocate_exception', 'std::__1::unique_ptr ::reset(unsigned char*)', 'std::bad_alloc::bad_alloc()']

16 16 std::__1::basic_string ,std::__1::allocator >const*date::detail::scan_keyword ,std::__1::basic_string ,std::__1::allocator >const*>(std::__1::basic_istream >&,std::__1::basic_string ,std::__1::allocator >const*,std::__1::basic_string ,std::__1::allocator >const*) call site: 00000 /src/pistache/src/../subprojects/hinnant-date/include/date/date.h:4918
4 4 1 :

['std::invalid_argument::invalid_argument(char const*)']

10 10 Pistache::Port::Port(std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/pistache/src/common/net.cc:136
2 2 1 :

['strncmp']

2 11 Pistache::match_string(charconst*,unsignedlong,Pistache::StreamCursor&,Pistache::CaseSensitivity) call site: 00000 /src/pistache/src/common/stream.cc:232
0 0 None 1374 2692 std::__1::basic_istream >&date::from_stream ,std::__1::chrono::duration >,std::__1::allocator >(std::__1::basic_istream >&,charconst*,date::fields >>&,std::__1::basic_string ,std::__1::allocator >*,std::__1::chrono::duration >*) call site: 00000 /src/pistache/src/../subprojects/hinnant-date/include/date/date.h:6603
0 0 None 1374 2692 std::__1::basic_istream >&date::from_stream ,std::__1::chrono::duration >,std::__1::allocator >(std::__1::basic_istream >&,charconst*,date::fields >>&,std::__1::basic_string ,std::__1::allocator >*,std::__1::chrono::duration >*) call site: 00000 /src/pistache/src/../subprojects/hinnant-date/include/date/date.h:6685
0 0 None 1374 2692 std::__1::basic_istream >&date::from_stream ,std::__1::chrono::duration >,std::__1::allocator >(std::__1::basic_istream >&,charconst*,date::fields >>&,std::__1::basic_string ,std::__1::allocator >*,std::__1::chrono::duration >*) call site: 00000 /src/pistache/src/../subprojects/hinnant-date/include/date/date.h:6931
0 0 None 1374 2692 std::__1::basic_istream >&date::from_stream ,std::__1::chrono::duration >,std::__1::allocator >(std::__1::basic_istream >&,charconst*,date::fields >>&,std::__1::basic_string ,std::__1::allocator >*,std::__1::chrono::duration >*) call site: 00000 /src/pistache/src/../subprojects/hinnant-date/include/date/date.h:7267
0 0 None 1374 2692 std::__1::basic_istream >&date::from_stream ,std::__1::chrono::duration >,std::__1::allocator >(std::__1::basic_istream >&,charconst*,date::fields >>&,std::__1::basic_string ,std::__1::allocator >*,std::__1::chrono::duration >*) call site: 00000 /src/pistache/src/../subprojects/hinnant-date/include/date/date.h:7296
0 0 None 1374 2692 std::__1::basic_istream >&date::from_stream ,std::__1::chrono::duration >,std::__1::allocator >(std::__1::basic_istream >&,charconst*,date::fields >>&,std::__1::basic_string ,std::__1::allocator >*,std::__1::chrono::duration >*) call site: 00000 /src/pistache/src/../subprojects/hinnant-date/include/date/date.h:7540
0 0 None 1374 2692 std::__1::basic_istream >&date::from_stream ,std::__1::chrono::duration >,std::__1::allocator >(std::__1::basic_istream >&,charconst*,date::fields >>&,std::__1::basic_string ,std::__1::allocator >*,std::__1::chrono::duration >*) call site: 00000 /src/pistache/src/../subprojects/hinnant-date/include/date/date.h:7574

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 Pistache::Http::Uri::Query::Query() [function] [call site] 00001
1 Pistache::Http::Uri::Query::add(std::__1::basic_string , std::__1::allocator >, std::__1::basic_string , std::__1::allocator >) [function] [call site] 00002
1 Pistache::Http::Header::CacheControl::CacheControl() [function] [call site] 00003
2 Pistache::Http::Header::Header::Header() [function] [call site] 00004
1 Pistache::Http::Header::Header::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00005
1 __cxa_begin_catch [call site] 00006
1 __cxa_end_catch [call site] 00007
1 Pistache::Http::Header::Accept::Accept() [function] [call site] 00008
2 Pistache::Http::Header::Header::Header() [function] [call site] 00009
1 Pistache::Http::Header::Header::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00010
1 __cxa_begin_catch [call site] 00011
1 __cxa_end_catch [call site] 00012
1 Pistache::Http::Header::Accept::Accept() [function] [call site] 00013
1 Pistache::Http::Header::Header::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00014
1 __cxa_begin_catch [call site] 00015
1 __cxa_end_catch [call site] 00016
1 Pistache::Http::Header::Authorization::Authorization() [function] [call site] 00017
2 Pistache::Http::Header::Header::Header() [function] [call site] 00018
2 Pistache::Http::Header::Header::~Header() [function] [call site] 00019
1 Pistache::Http::Header::Authorization::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00020
1 __cxa_begin_catch [call site] 00021
1 __cxa_end_catch [call site] 00022
1 Pistache::Http::Header::Expect::Expect() [function] [call site] 00023
2 Pistache::Http::Header::Header::Header() [function] [call site] 00024
1 Pistache::Http::Header::Header::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00025
1 __cxa_begin_catch [call site] 00026
1 __cxa_end_catch [call site] 00027
1 Pistache::Http::Header::Connection::Connection() [function] [call site] 00028
2 Pistache::Http::Header::Header::Header() [function] [call site] 00029
1 Pistache::Http::Header::Header::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00030
1 __cxa_begin_catch [call site] 00031
1 __cxa_end_catch [call site] 00032
1 Pistache::Http::Header::Date::Date() [function] [call site] 00033
2 Pistache::Http::Header::Header::Header() [function] [call site] 00034
2 Pistache::Http::FullDate::FullDate() [function] [call site] 00035
2 Pistache::Http::Header::Header::~Header() [function] [call site] 00036
1 Pistache::Http::Header::Date::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00037
2 Pistache::Http::FullDate::fromString(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00038
3 Pistache::Http::(anonymous namespace)::parse_RFC_1123(std::__1::basic_string , std::__1::allocator > const&, std::__1::chrono::time_point > >&) [function] [call site] 00039
4 _ZN4date5parseINSt3__16chrono10time_pointINS2_12system_clockENS2_8durationIxNS1_5ratioILl1ELl1000000EEEEEEEcEEDTcmcl11from_streamclsr3stdE7declvalIRNS1_13basic_istreamIT0_NS1_11char_traitsISB_EEEEEEfp_fp0_EtlNS_11parse_manipIT_SB_SD_NS1_9allocatorISB_EEEEfp_fp0_EEPKSB_RSH_ [function] [call site] 00040
5 date::parse_manip > >, char, std::__1::char_traits , std::__1::allocator >::parse_manip(std::__1::basic_string , std::__1::allocator >, std::__1::chrono::time_point > >&, std::__1::basic_string , std::__1::allocator >*, std::__1::chrono::duration >*) [function] [call site] 00041
3 Pistache::Http::(anonymous namespace)::parse_RFC_850(std::__1::basic_string , std::__1::allocator > const&, std::__1::chrono::time_point > >&) [function] [call site] 00042
4 _ZN4date5parseINSt3__16chrono10time_pointINS2_12system_clockENS2_8durationIxNS1_5ratioILl1ELl1000000EEEEEEEcEEDTcmcl11from_streamclsr3stdE7declvalIRNS1_13basic_istreamIT0_NS1_11char_traitsISB_EEEEEEfp_fp0_EtlNS_11parse_manipIT_SB_SD_NS1_9allocatorISB_EEEEfp_fp0_EEPKSB_RSH_ [function] [call site] 00043
3 Pistache::Http::(anonymous namespace)::parse_asctime(std::__1::basic_string , std::__1::allocator > const&, std::__1::chrono::time_point > >&) [function] [call site] 00044
4 _ZN4date5parseINSt3__16chrono10time_pointINS2_12system_clockENS2_8durationIxNS1_5ratioILl1ELl1000000EEEEEEEcEEDTcmcl11from_streamclsr3stdE7declvalIRNS1_13basic_istreamIT0_NS1_11char_traitsISB_EEEEEEfp_fp0_EtlNS_11parse_manipIT_SB_SD_NS1_9allocatorISB_EEEEfp_fp0_EEPKSB_RSH_ [function] [call site] 00045
3 __cxa_allocate_exception [call site] 00046
3 Pistache::Http::FullDate::FullDate(std::__1::chrono::time_point > >) [function] [call site] 00047
1 __cxa_begin_catch [call site] 00048
1 __cxa_end_catch [call site] 00049
1 Pistache::Http::Header::Host::Host() [function] [call site] 00050
2 Pistache::Http::Header::Header::Header() [function] [call site] 00051
2 Pistache::Port::Port(unsigned short) [function] [call site] 00052
2 Pistache::Http::Header::Header::~Header() [function] [call site] 00053
1 Pistache::Http::Header::Host::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00054
2 Pistache::AddressParser::AddressParser(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00055
3 __cxa_allocate_exception [call site] 00056
3 std::invalid_argument::invalid_argument(char const*) [function] [call site] 00057
4 std::logic_error::logic_error(char const*) [call site] 00058
2 Pistache::AddressParser::rawHost() const [function] [call site] 00059
2 Pistache::AddressParser::rawPort() const [function] [call site] 00060
2 Pistache::Port::Port(unsigned short) [function] [call site] 00061
2 Pistache::Port::Port(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00062
3 __cxa_allocate_exception [call site] 00063
3 std::invalid_argument::invalid_argument(char const*) [function] [call site] 00064
3 strtol [call site] 00065
3 Pistache::Port::min() [function] [call site] 00066
3 __cxa_allocate_exception [call site] 00067
3 std::invalid_argument::invalid_argument(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00068
2 Pistache::AddressParser::~AddressParser() [function] [call site] 00069
1 __cxa_begin_catch [call site] 00070
1 __cxa_end_catch [call site] 00071
1 Pistache::Http::Header::ContentEncoding::ContentEncoding() [function] [call site] 00072
2 Pistache::Http::Header::EncodingHeader::EncodingHeader(Pistache::Http::Header::Encoding) [function] [call site] 00073
3 Pistache::Http::Header::Header::Header() [function] [call site] 00074
1 Pistache::Http::Header::Header::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00075
1 __cxa_begin_catch [call site] 00076
1 __cxa_end_catch [call site] 00077
1 Pistache::Http::Header::ContentType::ContentType() [function] [call site] 00078
2 Pistache::Http::Header::Header::Header() [function] [call site] 00079
2 Pistache::Http::Mime::MediaType::MediaType() [function] [call site] 00080
1 Pistache::Http::Header::Header::parse(std::__1::basic_string , std::__1::allocator > const&) [function] [call site] 00081
1 __cxa_begin_catch [call site] 00082
1 __cxa_end_catch [call site] 00083
1 Pistache::Http::Header::ContentType::~ContentType() [function] [call site] 00084
2 Pistache::Http::Mime::MediaType::~MediaType() [function] [call site] 00085
2 Pistache::Http::Header::Header::~Header() [function] [call site] 00086
1 Pistache::Http::Uri::Query::~Query() [function] [call site] 00087