Fuzz introspector: multipart_parser_fuzzer
For issues and ideas: https://github.com/ossf/fuzz-introspector/issues

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
13 50 httplib::detail::FormDataParser::parse_content_disposition(std::__1::basic_string , std::__1::allocator > const&, std::__1::basic_string , std::__1::allocator >&) const call site: 00050
5 43 httplib::detail::FormDataParser::start_with_case_ignore(std::__1::basic_string , std::__1::allocator > const&, char const*, unsigned long) const call site: 00043
1 83 LLVMFuzzerTestOneInput call site: 00083

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 httplib::detail::FormDataParser::FormDataParser() [function] [call site] 00001
2 httplib::FormData::FormData() [function] [call site] 00002
1 httplib::detail::FormDataParser::set_boundary(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&) [function] [call site] 00003
1 httplib::detail::FormDataParser::parse(char const*, unsigned long, std::__1::function<bool (httplib::FormData const&)> const&, std::__1::function<bool (char const*, unsigned long)> const&) [function] [call site] 00004
2 httplib::detail::FormDataParser::buf_append(char const*, unsigned long) [function] [call site] 00005
3 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00006
2 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00007
2 httplib::detail::FormDataParser::buf_find(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const [function] [call site] 00008
3 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00009
3 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00010
3 httplib::detail::FormDataParser::start_with(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const [function] [call site] 00011
3 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00012
2 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00013
2 httplib::detail::FormDataParser::buf_erase(unsigned long) [function] [call site] 00014
2 httplib::detail::FormDataParser::clear_file_info() [function] [call site] 00015
2 httplib::detail::FormDataParser::buf_find(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const [function] [call site] 00016
2 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00017
2 httplib::detail::FormDataParser::buf_erase(unsigned long) [function] [call site] 00018
2 httplib::detail::FormDataParser::buf_head(unsigned long) const [function] [call site] 00019
2 bool httplib::detail::parse_header<httplib::detail::FormDataParser::parse(char const*, unsigned long, std::__1::function<bool (httplib::FormData const&)> const&, std::__1::function<bool (char const*, unsigned long)> const&)::{lambda(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&)#1}>(char const*, char const*, httplib::detail::FormDataParser::parse(char const*, unsigned long, std::__1::function<bool (httplib::FormData const&)> const&, std::__1::function<bool (char const*, unsigned long)> const&)::{lambda(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&)#1}) [function] [call site] 00020
3 httplib::detail::is_space_or_tab(char) [function] [call site] 00021
3 httplib::detail::fields::is_field_name(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00022
4 httplib::detail::fields::is_token(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00023
5 httplib::detail::fields::is_token_char(char) [function] [call site] 00024
6 httplib::detail::is_ascii_alnum(char) [function] [call site] 00025
7 httplib::detail::is_ascii_digit(char) [function] [call site] 00026
7 httplib::detail::is_ascii_alpha(char) [function] [call site] 00027
3 httplib::detail::is_space_or_tab(char) [function] [call site] 00028
3 httplib::detail::fields::is_field_value(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00029
4 httplib::detail::fields::is_field_content(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00030
5 httplib::detail::fields::is_field_vchar(char) [function] [call site] 00031
6 httplib::detail::fields::is_vchar(char) [function] [call site] 00032
6 httplib::detail::fields::is_obs_text(char) [function] [call site] 00033
5 httplib::detail::fields::is_field_vchar(char) [function] [call site] 00034
5 httplib::detail::fields::is_field_vchar(char) [function] [call site] 00035
5 httplib::detail::fields::is_field_vchar(char) [function] [call site] 00036
5 httplib::detail::fields::is_field_vchar(char) [function] [call site] 00037
3 httplib::detail::FormDataParser::parse(char const*, unsigned long, std::__1::function<bool (httplib::FormData const&)> const&, std::__1::function<bool (char const*, unsigned long)> const&)::{lambda(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&)#1}::operator()(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&) const [function] [call site] 00038
2 bool httplib::detail::parse_header<httplib::detail::FormDataParser::parse(char const*, unsigned long, std::__1::function<bool (httplib::FormData const&)> const&, std::__1::function<bool (char const*, unsigned long)> const&)::{lambda(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&)#2}>(char const*, char const*, httplib::detail::FormDataParser::parse(char const*, unsigned long, std::__1::function<bool (httplib::FormData const&)> const&, std::__1::function<bool (char const*, unsigned long)> const&)::{lambda(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&)#2}) [function] [call site] 00039
3 httplib::detail::FormDataParser::parse(char const*, unsigned long, std::__1::function<bool (httplib::FormData const&)> const&, std::__1::function<bool (char const*, unsigned long)> const&)::{lambda(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&)#2}::operator()(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&) const [function] [call site] 00040
2 httplib::detail::FormDataParser::start_with_case_ignore(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*, unsigned long) const [function] [call site] 00041
3 strlen [call site] 00042
3 httplib::detail::case_ignore::to_lower(int) [function] [call site] 00043
2 unsigned long httplib::detail::str_len<14ul>(char const (&) [14ul]) [function] [call site] 00044
2 httplib::detail::trim_copy(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00045
3 httplib::detail::trim(char const*, char const*, unsigned long, unsigned long) [function] [call site] 00046
4 httplib::detail::is_space_or_tab(char) [function] [call site] 00047
4 httplib::detail::is_space_or_tab(char) [function] [call site] 00048
2 httplib::detail::FormDataParser::parse_content_disposition(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 [function] [call site] 00049
3 httplib::detail::FormDataParser::start_with_case_ignore(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*, unsigned long) const [function] [call site] 00050
3 httplib::detail::FormDataParser::start_with_case_ignore(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*, unsigned long) const [function] [call site] 00051
2 httplib::detail::parse_disposition_params(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::multimap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<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> > > > >&) [function] [call site] 00052
3 httplib::detail::split(char const*, char const*, char, std::__1::function<void (char const*, char const*)>) [function] [call site] 00053
4 httplib::detail::split(char const*, char const*, char, unsigned long, std::__1::function<void (char const*, char const*)>) [function] [call site] 00054
5 httplib::detail::trim(char const*, char const*, unsigned long, unsigned long) [function] [call site] 00055
5 httplib::detail::trim(char const*, char const*, unsigned long, unsigned long) [function] [call site] 00056
2 httplib::detail::FormDataParser::start_with_case_ignore(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*, unsigned long) const [function] [call site] 00057
2 httplib::decode_path_component(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00058
3 httplib::detail::from_hex_to_i(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, int&) [function] [call site] 00059
4 httplib::detail::is_hex(char, int&) [function] [call site] 00060
5 httplib::detail::is_ascii_digit(char) [function] [call site] 00061
3 httplib::detail::to_utf8(int, char*) [function] [call site] 00062
3 httplib::detail::from_hex_to_i(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, int&) [function] [call site] 00063
2 httplib::detail::FormDataParser::buf_erase(unsigned long) [function] [call site] 00064
2 httplib::detail::FormDataParser::buf_find(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const [function] [call site] 00065
2 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00066
2 httplib::detail::FormDataParser::buf_find(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const [function] [call site] 00067
2 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00068
2 httplib::detail::FormDataParser::buf_data() const [function] [call site] 00069
2 httplib::detail::FormDataParser::buf_erase(unsigned long) [function] [call site] 00070
2 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00071
2 httplib::detail::FormDataParser::buf_data() const [function] [call site] 00072
2 httplib::detail::FormDataParser::buf_erase(unsigned long) [function] [call site] 00073
2 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00074
2 httplib::detail::FormDataParser::buf_start_with(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const [function] [call site] 00075
3 httplib::detail::FormDataParser::start_with(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const [function] [call site] 00076
2 httplib::detail::FormDataParser::buf_erase(unsigned long) [function] [call site] 00077
2 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00078
2 httplib::detail::FormDataParser::buf_start_with(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const [function] [call site] 00079
2 httplib::detail::FormDataParser::buf_erase(unsigned long) [function] [call site] 00080
2 httplib::detail::FormDataParser::buf_size() const [function] [call site] 00081
2 httplib::detail::FormDataParser::buf_erase(unsigned long) [function] [call site] 00082
1 httplib::detail::FormDataParser::~FormDataParser() [function] [call site] 00083
2 httplib::FormData::~FormData() [function] [call site] 00084