Fuzz introspector: template_fuzzer
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
0 0 None 58 1394 crow::mustache::template_t::render_internal(int,int,std::__1::vector >&,std::__1::basic_string ,std::__1::allocator >&,int)const call site: 00000 /src/crow/include/crow/mustache.h:292
0 0 None 58 1394 crow::mustache::template_t::render_internal(int,int,std::__1::vector >&,std::__1::basic_string ,std::__1::allocator >&,int)const call site: 00000 /src/crow/include/crow/mustache.h:292
0 0 None 58 1394 crow::mustache::template_t::render_internal(int,int,std::__1::vector >&,std::__1::basic_string ,std::__1::allocator >&,int)const call site: 00000 /src/crow/include/crow/mustache.h:292
0 0 None 58 1394 crow::mustache::template_t::render_internal(int,int,std::__1::vector >&,std::__1::basic_string ,std::__1::allocator >&,int)const call site: 00000 /src/crow/include/crow/mustache.h:292
0 0 None 58 1394 crow::mustache::template_t::render_internal(int,int,std::__1::vector >&,std::__1::basic_string ,std::__1::allocator >&,int)const call site: 00000 /src/crow/include/crow/mustache.h:336
0 0 None 58 1394 crow::mustache::template_t::render_internal(int,int,std::__1::vector >&,std::__1::basic_string ,std::__1::allocator >&,int)const call site: 00000 /src/crow/include/crow/mustache.h:364
0 0 None 6 15 crow::mustache::template_t::parse() call site: 00000 /src/crow/include/crow/mustache.h:602
0 0 None 6 15 crow::mustache::template_t::parse() call site: 00000 /src/crow/include/crow/mustache.h:604
0 0 3 :

['std::__1::istreambuf_iterator >::istreambuf_iterator[abi:v180000](std::__1::basic_istream >&)', 'std::__1::istreambuf_iterator >::istreambuf_iterator[abi:v180000]()', 'std::__1::istreambuf_iterator > std::__1::basic_string , std::__1::allocator >::basic_string[abi:v180000] >, 0>(std::__1::istreambuf_iterator >)']

0 0 crow::mustache::default_loader(std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/crow/include/crow/mustache.h:719
0 0 None 0 0 crow::utility::sanitize_filename(std::__1::basic_string ,std::__1::allocator >&,char)::{lambda(std::__1::basic_string ,std::__1::allocator >&,unsignedint,charconst*,bool,char)#1}::operator()(std::__1::basic_string ,std::__1::allocator >&,unsignedint,charconst*,bool,char)const call site: 00000 /src/crow/include/crow/utility.h:738

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 crow::mustache::compile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00001
2 crow::mustache::template_t::template_t(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) [function] [call site] 00002
3 crow::mustache::template_t::parse() [function] [call site] 00003
4 __cxa_allocate_exception [call site] 00004
4 crow::mustache::invalid_template_exception::invalid_template_exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00005
5 std::exception::exception[abi:v180000]() [function] [call site] 00006
5 std::exception::~exception() [call site] 00007
4 __cxa_allocate_exception [call site] 00008
4 crow::mustache::invalid_template_exception::invalid_template_exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00009
4 __cxa_allocate_exception [call site] 00010
4 crow::mustache::invalid_template_exception::invalid_template_exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00011
4 __cxa_allocate_exception [call site] 00012
4 crow::mustache::invalid_template_exception::invalid_template_exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00013
4 __cxa_allocate_exception [call site] 00014
4 crow::mustache::invalid_template_exception::invalid_template_exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00015
4 __cxa_allocate_exception [call site] 00016
4 crow::mustache::invalid_template_exception::invalid_template_exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00017
4 __cxa_allocate_exception [call site] 00018
4 crow::mustache::invalid_template_exception::invalid_template_exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00019
4 __cxa_allocate_exception [call site] 00020
4 crow::mustache::invalid_template_exception::invalid_template_exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00021
4 __cxa_allocate_exception [call site] 00022
4 crow::mustache::invalid_template_exception::invalid_template_exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00023
4 __cxa_allocate_exception [call site] 00024
4 crow::mustache::invalid_template_exception::invalid_template_exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00025
1 build_context_object(FuzzedDataProvider&) [function] [call site] 00026
2 crow::json::wvalue::wvalue() [function] [call site] 00027
3 crow::returnable::returnable(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) [function] [call site] 00028
3 crow::json::wvalue::number::number() [function] [call site] 00029
2 crow::json::wvalue::operator[](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00030
3 crow::json::wvalue::reset() [function] [call site] 00031
2 crow::json::wvalue::~wvalue() [function] [call site] 00032
3 crow::returnable::~returnable() [function] [call site] 00033
1 crow::mustache::template_t::render_string(crow::json::wvalue const&) const [function] [call site] 00034
2 crow::mustache::template_t::render_internal(int, int, std::__1::vector<crow::json::wvalue const*, std::__1::allocator<crow::json::wvalue const*> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, int) const [function] [call site] 00035
3 crow::mustache::template_t::render_fragment(std::__1::pair<int, int>, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) const [function] [call site] 00036
3 crow::mustache::template_t::tag_name(crow::mustache::Action const&) const [function] [call site] 00037
3 crow::mustache::load(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00038
4 crow::utility::sanitize_filename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) [function] [call site] 00039
5 crow::utility::sanitize_filename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char)::{lambda(char)#1}::operator()(char) const [function] [call site] 00040
5 crow::utility::sanitize_filename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char)::{lambda(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char)#1}::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char) const [function] [call site] 00041
6 crow::utility::sanitize_filename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char)::{lambda(char)#1}::operator()(char) const [function] [call site] 00042
5 crow::utility::sanitize_filename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char)::{lambda(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char)#1}::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char) const [function] [call site] 00043
5 crow::utility::sanitize_filename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char)::{lambda(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char)#1}::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char) const [function] [call site] 00044
5 crow::utility::sanitize_filename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char)::{lambda(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char)#1}::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char) const [function] [call site] 00045
5 crow::utility::sanitize_filename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char)::{lambda(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char)#1}::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char) const [function] [call site] 00046
5 crow::utility::sanitize_filename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char)::{lambda(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char)#1}::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char) const [function] [call site] 00047
5 crow::utility::sanitize_filename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char)::{lambda(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char)#1}::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned int, char const*, bool, char) const [function] [call site] 00048
4 crow::mustache::detail::get_loader_ref() [function] [call site] 00049
5 __cxa_guard_acquire [call site] 00050
3 crow::mustache::template_t::render_internal(int, int, std::__1::vector<crow::json::wvalue const*, std::__1::allocator<crow::json::wvalue const*> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, int) const [function] [call site] 00051
4 crow::mustache::template_t::~template_t() [function] [call site] 00052
4 crow::mustache::template_t::isTagInsideObjectBlock(int const&, std::__1::vector<crow::json::wvalue const*, std::__1::allocator<crow::json::wvalue const*> > const&) const [function] [call site] 00053
5 crow::json::wvalue::t() const [function] [call site] 00054
4 crow::mustache::template_t::tag_name(crow::mustache::Action const&) const [function] [call site] 00055
4 crow::json::wvalue::t() const [function] [call site] 00056
4 crow::mustache::template_t::escape(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] 00057
4 crow::json::wvalue::execute(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const [function] [call site] 00058
4 crow::mustache::template_t::template_t(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) [function] [call site] 00059
4 crow::mustache::template_t::render_string(crow::json::wvalue const&) const [function] [call site] 00060
4 crow::mustache::template_t::~template_t() [function] [call site] 00061
4 crow::mustache::template_t::escape(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] 00062
4 __cxa_allocate_exception [call site] 00063
4 crow::json::wvalue::t() const [function] [call site] 00064
4 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > crow::utility::lexical_cast<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>(int const&) [function] [call site] 00065
4 __cxa_guard_acquire [call site] 00066
4 crow::json::wvalue::wvalue() [function] [call site] 00067
4 crow::mustache::template_t::tag_name(crow::mustache::Action const&) const [function] [call site] 00068
4 crow::json::wvalue::t() const [function] [call site] 00069
4 crow::mustache::template_t::tag_name(crow::mustache::Action const&) const [function] [call site] 00070
4 crow::json::wvalue::t() const [function] [call site] 00071
4 crow::mustache::template_t::render_internal(int, int, std::__1::vector<crow::json::wvalue const*, std::__1::allocator<crow::json::wvalue const*> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, int) const [function] [call site] 00072
5 __cxa_allocate_exception [call site] 00073
5 crow::json::wvalue::t() const [function] [call site] 00074
5 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > crow::utility::lexical_cast<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>(int const&) [function] [call site] 00075
5 __cxa_allocate_exception [call site] 00076
5 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > crow::utility::lexical_cast<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>(int const&) [function] [call site] 00077
5 crow::mustache::template_t::render_fragment(std::__1::pair<int, int>, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) const [function] [call site] 00078
1 crow::json::wvalue::~wvalue() [function] [call site] 00079
1 crow::mustache::template_t::~template_t() [function] [call site] 00080
1 __cxa_begin_catch [call site] 00081
1 __cxa_end_catch [call site] 00082