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

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 google::grpc::transcoding::HttpTemplate::Parse(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00001
2 google::grpc::transcoding::HttpTemplate::HttpTemplate(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<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::vector<google::grpc::transcoding::HttpTemplate::Variable, std::__1::allocator<google::grpc::transcoding::HttpTemplate::Variable> >&&) [function] [call site] 00002
2 google::grpc::transcoding::(anonymous namespace)::Parser::Parser(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00003
2 google::grpc::transcoding::(anonymous namespace)::Parser::Parse() [function] [call site] 00004
3 google::grpc::transcoding::(anonymous namespace)::Parser::ParseTemplate() [function] [call site] 00005
4 google::grpc::transcoding::(anonymous namespace)::Parser::Consume(char) [function] [call site] 00006
5 google::grpc::transcoding::(anonymous namespace)::Parser::NextChar() [function] [call site] 00007
5 google::grpc::transcoding::(anonymous namespace)::Parser::current_char() const [function] [call site] 00008
4 google::grpc::transcoding::(anonymous namespace)::Parser::ParseSegments() [function] [call site] 00009
5 google::grpc::transcoding::(anonymous namespace)::Parser::ParseSegment() [function] [call site] 00010
6 google::grpc::transcoding::(anonymous namespace)::Parser::EnsureCurrent() [function] [call site] 00011
7 google::grpc::transcoding::(anonymous namespace)::Parser::NextChar() [function] [call site] 00012
6 google::grpc::transcoding::(anonymous namespace)::Parser::current_char() const [function] [call site] 00013
6 google::grpc::transcoding::(anonymous namespace)::Parser::Consume(char) [function] [call site] 00014
6 google::grpc::transcoding::(anonymous namespace)::Parser::Consume(char) [function] [call site] 00015
6 google::grpc::transcoding::(anonymous namespace)::Parser::MarkVariableHasWildCardPath() [function] [call site] 00016
7 google::grpc::transcoding::(anonymous namespace)::Parser::CurrentVariable() [function] [call site] 00017
6 google::grpc::transcoding::(anonymous namespace)::Parser::ParseVariable() [function] [call site] 00018
7 google::grpc::transcoding::(anonymous namespace)::Parser::Consume(char) [function] [call site] 00019
7 google::grpc::transcoding::(anonymous namespace)::Parser::StartVariable() [function] [call site] 00020
8 google::grpc::transcoding::HttpTemplate::Variable::~Variable() [function] [call site] 00021
8 google::grpc::transcoding::(anonymous namespace)::Parser::CurrentVariable() [function] [call site] 00022
8 google::grpc::transcoding::(anonymous namespace)::Parser::CurrentVariable() [function] [call site] 00023
7 google::grpc::transcoding::(anonymous namespace)::Parser::ParseFieldPath() [function] [call site] 00024
8 google::grpc::transcoding::(anonymous namespace)::Parser::ParseIdentifier() [function] [call site] 00025
9 google::grpc::transcoding::(anonymous namespace)::Parser::NextChar() [function] [call site] 00026
9 google::grpc::transcoding::(anonymous namespace)::Parser::current_char() const [function] [call site] 00027
9 google::grpc::transcoding::(anonymous namespace)::Parser::AddFieldIdentifier(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) [function] [call site] 00028
10 google::grpc::transcoding::(anonymous namespace)::Parser::CurrentVariable() [function] [call site] 00029
9 google::grpc::transcoding::(anonymous namespace)::Parser::Consume(char) [function] [call site] 00030
9 google::grpc::transcoding::(anonymous namespace)::Parser::AddFieldIdentifier(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) [function] [call site] 00031
8 google::grpc::transcoding::(anonymous namespace)::Parser::Consume(char) [function] [call site] 00032
8 google::grpc::transcoding::(anonymous namespace)::Parser::ParseIdentifier() [function] [call site] 00033
7 google::grpc::transcoding::(anonymous namespace)::Parser::Consume(char) [function] [call site] 00034
7 google::grpc::transcoding::(anonymous namespace)::Parser::ParseSegments() [function] [call site] 00035
8 google::grpc::transcoding::(anonymous namespace)::Parser::Consume(char) [function] [call site] 00036
8 google::grpc::transcoding::(anonymous namespace)::Parser::ParseSegment() [function] [call site] 00037
9 google::grpc::transcoding::(anonymous namespace)::Parser::ParseLiteralSegment() [function] [call site] 00038
10 google::grpc::transcoding::(anonymous namespace)::Parser::ParseLiteral(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) [function] [call site] 00039
11 google::grpc::transcoding::(anonymous namespace)::Parser::EnsureCurrent() [function] [call site] 00040
11 google::grpc::transcoding::(anonymous namespace)::Parser::current_char() const [function] [call site] 00041
11 google::grpc::transcoding::(anonymous namespace)::Parser::Consume(char) [function] [call site] 00042
11 google::grpc::transcoding::(anonymous namespace)::Parser::NextChar() [function] [call site] 00043
7 google::grpc::transcoding::(anonymous namespace)::Parser::EndVariable() [function] [call site] 00044
8 google::grpc::transcoding::(anonymous namespace)::Parser::CurrentVariable() [function] [call site] 00045
8 google::grpc::transcoding::(anonymous namespace)::Parser::CurrentVariable() [function] [call site] 00046
8 google::grpc::transcoding::(anonymous namespace)::Parser::ValidateVariable(google::grpc::transcoding::HttpTemplate::Variable const&) [function] [call site] 00047
7 google::grpc::transcoding::(anonymous namespace)::Parser::Consume(char) [function] [call site] 00048
4 google::grpc::transcoding::(anonymous namespace)::Parser::EnsureCurrent() [function] [call site] 00049
4 google::grpc::transcoding::(anonymous namespace)::Parser::current_char() const [function] [call site] 00050
4 google::grpc::transcoding::(anonymous namespace)::Parser::ParseVerb() [function] [call site] 00051
5 google::grpc::transcoding::(anonymous namespace)::Parser::Consume(char) [function] [call site] 00052
5 google::grpc::transcoding::(anonymous namespace)::Parser::ParseLiteral(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) [function] [call site] 00053
3 google::grpc::transcoding::(anonymous namespace)::Parser::ConsumedAllInput() [function] [call site] 00054
3 google::grpc::transcoding::(anonymous namespace)::Parser::PostProcessVariables() [function] [call site] 00055
2 google::grpc::transcoding::(anonymous namespace)::Parser::ValidateParts() [function] [call site] 00056
2 google::grpc::transcoding::(anonymous namespace)::Parser::segments() [function] [call site] 00057
2 google::grpc::transcoding::(anonymous namespace)::Parser::verb() [function] [call site] 00058
2 google::grpc::transcoding::(anonymous namespace)::Parser::variables() [function] [call site] 00059
2 google::grpc::transcoding::HttpTemplate::HttpTemplate(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<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::vector<google::grpc::transcoding::HttpTemplate::Variable, std::__1::allocator<google::grpc::transcoding::HttpTemplate::Variable> >&&) [function] [call site] 00060
2 google::grpc::transcoding::(anonymous namespace)::Parser::~Parser() [function] [call site] 00061