Fuzz introspector: firestore_resourcepath_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
110 166 3 :

['absl::lts_20240116::AlphaNum::AlphaNum(int)', 'void absl::lts_20240116::StrAppend (std::__1::basic_string , std::__1::allocator >*, absl::lts_20240116::AlphaNum const&, absl::lts_20240116::AlphaNum const&, absl::lts_20240116::AlphaNum const&, absl::lts_20240116::AlphaNum const&, absl::lts_20240116::AlphaNum const&, char const (&) [3])', 'absl::lts_20240116::AlphaNum::AlphaNum(char const*)']

142 340 firebase::firestore::util::(anonymousnamespace)::DefaultThrowHandler(firebase::firestore::util::ExceptionType,charconst*,charconst*,int,std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/firebase-ios-sdk/Firestore/core/src/util/exception.cc:50
0 4 2 :

['absl::lts_20240116::strings_internal::Splitter ::text() const', 'absl::lts_20240116::string_view::size() const']

0 4 absl::lts_20240116::strings_internal::SplitIterator >::SplitIterator(absl::lts_20240116::strings_internal::SplitIterator >::State,absl::lts_20240116::strings_internal::Splitter const*) call site: 00000 /src/firebase-ios-sdk/build/external/src/abseil-cpp/absl/strings/internal/str_split_internal.h:114
0 4 1 :

['absl::lts_20240116::string_view::empty() const']

0 4 absl::lts_20240116::string_view::find(absl::lts_20240116::string_view,unsignedlong)const call site: 00000 /src/firebase-ios-sdk/build/external/src/abseil-cpp/absl/strings/string_view.cc:110
0 0 None 0 50 firebase::firestore::util::internal::StringFormatPieces(charconst*,std::initializer_list ) call site: 00000 /src/firebase-ios-sdk/Firestore/core/src/util/string_format.cc:104
0 0 None 0 4 absl::lts_20240116::strings_internal::SplitIterator >::SplitIterator(absl::lts_20240116::strings_internal::SplitIterator >::State,absl::lts_20240116::strings_internal::Splitter const*) call site: 00000 /src/firebase-ios-sdk/build/external/src/abseil-cpp/absl/strings/internal/str_split_internal.h:108
0 0 None 0 0 firebase::firestore::util::LogMessage(firebase::firestore::util::LogLevel,std::__1::basic_string ,std::__1::allocator >const&) call site: 00000 /src/firebase-ios-sdk/Firestore/core/src/util/log_stdio.cc:43
0 0 None 0 0 absl::lts_20240116::(anonymousnamespace)::memmatch(charconst*,unsignedlong,charconst*,unsignedlong) call site: 00000 /src/firebase-ios-sdk/build/external/src/abseil-cpp/absl/strings/string_view.cc:37

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 firebase::firestore::model::ResourcePath::FromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00001
2 absl::lts_20240116::string_view::string_view<std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00002
3 absl::lts_20240116::string_view::string_view(char const*, unsigned long, absl::lts_20240116::string_view::SkipCheckLengthTag) [function] [call site] 00003
2 firebase::firestore::model::ResourcePath::FromStringView(absl::lts_20240116::string_view) [function] [call site] 00004
3 absl::lts_20240116::string_view::string_view(char const*) [function] [call site] 00005
4 absl::lts_20240116::string_view::StrlenInternal(char const*) [function] [call site] 00006
5 strlen [call site] 00007
3 absl::lts_20240116::StrContains(absl::lts_20240116::string_view, absl::lts_20240116::string_view) [function] [call site] 00008
4 absl::lts_20240116::string_view::find(absl::lts_20240116::string_view, unsigned long) const [function] [call site] 00009
5 absl::lts_20240116::string_view::empty() const [function] [call site] 00010
5 absl::lts_20240116::string_view::empty() const [function] [call site] 00011
5 absl::lts_20240116::(anonymous namespace)::memmatch(char const*, unsigned long, char const*, unsigned long) [function] [call site] 00012
6 memchr [call site] 00013
6 memcmp [call site] 00014
5 __clang_call_terminate [call site] 00015
6 __cxa_begin_catch [call site] 00016
3 void firebase::firestore::util::ThrowInvalidArgument<absl::lts_20240116::string_view>(char const*, absl::lts_20240116::string_view const&) [function] [call site] 00017
4 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > firebase::firestore::util::StringFormat<absl::lts_20240116::string_view>(char const*, absl::lts_20240116::string_view const&) [function] [call site] 00018
5 absl::lts_20240116::strings_internal::StringifySink::StringifySink() [function] [call site] 00019
5 firebase::firestore::util::FormatArg::FormatArg<absl::lts_20240116::string_view const&>(absl::lts_20240116::string_view const&, absl::lts_20240116::strings_internal::StringifySink&&) [function] [call site] 00020
6 firebase::firestore::util::FormatArg::FormatArg<absl::lts_20240116::string_view const&>(absl::lts_20240116::string_view const&, absl::lts_20240116::strings_internal::StringifySink&&, firebase::firestore::util::internal::FormatChoice<5>) [function] [call site] 00021
7 absl::lts_20240116::AlphaNum::AlphaNum(absl::lts_20240116::string_view) [function] [call site] 00022
5 absl::lts_20240116::AlphaNum::Piece() const [function] [call site] 00023
5 firebase::firestore::util::internal::StringFormatPieces(char const*, std::initializer_list<absl::lts_20240116::string_view>) [function] [call site] 00024
6 strlen [call site] 00025
6 firebase::firestore::util::internal::StringFormatPieces(char const*, std::initializer_list<absl::lts_20240116::string_view>)::$_0::operator()(char) const [function] [call site] 00026
7 firebase::firestore::util::internal::StringFormatPieces(char const*, std::initializer_list<absl::lts_20240116::string_view>)::$_1::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const [function] [call site] 00027
8 absl::lts_20240116::string_view::data() const [function] [call site] 00028
8 absl::lts_20240116::string_view::size() const [function] [call site] 00029
7 firebase::firestore::util::internal::StringFormatPieces(char const*, std::initializer_list<absl::lts_20240116::string_view>)::$_2::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const [function] [call site] 00030
8 absl::lts_20240116::string_view::data() const [function] [call site] 00031
8 absl::lts_20240116::string_view::string_view(char const*) [function] [call site] 00032
8 absl::lts_20240116::BytesToHexString(absl::lts_20240116::string_view) [function] [call site] 00033
9 absl::lts_20240116::string_view::size() const [function] [call site] 00034
9 void absl::lts_20240116::strings_internal::STLStringResizeUninitialized<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, unsigned long) [function] [call site] 00035
10 absl::lts_20240116::strings_internal::ResizeUninitializedTraits<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>::Resize(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, unsigned long) [function] [call site] 00036
9 absl::lts_20240116::string_view::data() const [function] [call site] 00037
9 absl::lts_20240116::string_view::size() const [function] [call site] 00038
9 void absl::lts_20240116::(anonymous namespace)::BytesToHexStringInternal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&>(unsigned char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned long) [function] [call site] 00039
6 firebase::firestore::util::internal::StringFormatPieces(char const*, std::initializer_list<absl::lts_20240116::string_view>)::$_0::operator()(char) const [function] [call site] 00040
5 absl::lts_20240116::strings_internal::StringifySink::~StringifySink() [function] [call site] 00041
4 firebase::firestore::util::Throw(firebase::firestore::util::ExceptionType, char const*, char const*, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) [function] [call site] 00042
3 absl::lts_20240116::strings_internal::ConvertibleToStringView::ConvertibleToStringView(absl::lts_20240116::string_view) [function] [call site] 00043
3 absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::strings_internal::SelectDelimiter<char>::type, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> absl::lts_20240116::StrSplit<char, absl::lts_20240116::SkipEmpty>(absl::lts_20240116::strings_internal::ConvertibleToStringView, char, absl::lts_20240116::SkipEmpty) [function] [call site] 00044
4 absl::lts_20240116::strings_internal::ConvertibleToStringView::value() const [function] [call site] 00045
4 absl::lts_20240116::ByChar::ByChar(char) [function] [call site] 00046
4 absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view>::Splitter(absl::lts_20240116::string_view, absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty) [function] [call site] 00047
3 _ZNK4absl12lts_2024011616strings_internal8SplitterINS0_6ByCharENS0_9SkipEmptyENS0_11string_viewEEcvT_INSt3__16vectorINS9_12basic_stringIcNS9_11char_traitsIcEENS9_9allocatorIcEEEENSE_ISG_EEEETnNS9_9enable_ifIXaantsr22ShouldUseLifetimeBoundIS5_S7_EE5valuesr23SplitterIsConvertibleToIS7_EE5valueEDnE4typeELDn0EEEv [function] [call site] 00048
4 absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view>::ConvertToContainer<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> >, false>::operator()(absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> const&) const [function] [call site] 00049
5 _ZNK4absl12lts_2024011616strings_internal8SplitterINS0_6ByCharENS0_9SkipEmptyENS0_11string_viewEEcvT_INSt3__16vectorIS5_NS9_9allocatorIS5_EEEETnNS9_9enable_ifIXaantsr22ShouldUseLifetimeBoundIS5_S7_EE5valuesr23SplitterIsConvertibleToIS7_EE5valueEDnE4typeELDn0EEEv [function] [call site] 00050
6 absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view>::ConvertToContainer<std::__1::vector<absl::lts_20240116::string_view, std::__1::allocator<absl::lts_20240116::string_view> >, absl::lts_20240116::string_view, false>::operator()(absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> const&) const [function] [call site] 00051
7 absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view>::begin() const [function] [call site] 00052
8 absl::lts_20240116::strings_internal::SplitIterator<absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> >::SplitIterator(absl::lts_20240116::strings_internal::SplitIterator<absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> >::State, absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> const*) [function] [call site] 00053
9 absl::lts_20240116::string_view::string_view() [function] [call site] 00054
9 absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view>::delimiter() const [function] [call site] 00055
9 absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view>::predicate() const [function] [call site] 00056
9 absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view>::text() const [function] [call site] 00057
9 absl::lts_20240116::string_view::data() const [function] [call site] 00058
9 absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view>::text() const [function] [call site] 00059
9 absl::lts_20240116::string_view::size() const [function] [call site] 00060
9 absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view>::text() const [function] [call site] 00061
9 absl::lts_20240116::string_view::size() const [function] [call site] 00062
9 absl::lts_20240116::strings_internal::SplitIterator<absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> >::operator++() [function] [call site] 00063
10 absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view>::text() const [function] [call site] 00064
10 absl::lts_20240116::ByChar::Find(absl::lts_20240116::string_view, unsigned long) const [function] [call site] 00065
11 absl::lts_20240116::string_view::find(char, unsigned long) const [function] [call site] 00066
12 absl::lts_20240116::string_view::empty() const [function] [call site] 00067
12 memchr [call site] 00068
11 absl::lts_20240116::string_view::data() const [function] [call site] 00069
11 absl::lts_20240116::string_view::size() const [function] [call site] 00070
11 absl::lts_20240116::string_view::string_view(char const*, unsigned long) [function] [call site] 00071
12 absl::lts_20240116::string_view::CheckLengthInternal(unsigned long) [function] [call site] 00072
13 absl::lts_20240116::string_view::CheckLengthInternal(unsigned long)::{lambda()#1}::operator()() const [function] [call site] 00073
14 __assert_fail [call site] 00074
11 absl::lts_20240116::string_view::substr(unsigned long, unsigned long) const [function] [call site] 00075
12 absl::lts_20240116::base_internal::ThrowStdOutOfRange(char const*) [function] [call site] 00076
13 __cxa_allocate_exception [call site] 00077
13 std::out_of_range::out_of_range[abi:ne180100](char const*) [function] [call site] 00078
14 std::logic_error::logic_error(char const*) [call site] 00079
13 __cxa_throw [call site] 00080
13 std::out_of_range::~out_of_range() [call site] 00081
13 __cxa_free_exception [call site] 00082
12 absl::lts_20240116::string_view::string_view() [function] [call site] 00083
12 absl::lts_20240116::string_view::Min(unsigned long, unsigned long) [function] [call site] 00084
12 absl::lts_20240116::string_view::string_view(char const*, unsigned long) [function] [call site] 00085
10 absl::lts_20240116::string_view::data() const [function] [call site] 00086
10 absl::lts_20240116::string_view::size() const [function] [call site] 00087
10 absl::lts_20240116::string_view::data() const [function] [call site] 00088
10 absl::lts_20240116::string_view::substr(unsigned long, unsigned long) const [function] [call site] 00089
10 absl::lts_20240116::string_view::size() const [function] [call site] 00090
10 absl::lts_20240116::SkipEmpty::operator()(absl::lts_20240116::string_view) const [function] [call site] 00091
11 absl::lts_20240116::string_view::empty() const [function] [call site] 00092
7 absl::lts_20240116::strings_internal::SplitIterator<absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> >::at_end() const [function] [call site] 00093
7 absl::lts_20240116::strings_internal::SplitIterator<absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> >::operator->() const [function] [call site] 00094
7 absl::lts_20240116::string_view::data() const [function] [call site] 00095
7 absl::lts_20240116::strings_internal::SplitIterator<absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> >::operator->() const [function] [call site] 00096
7 absl::lts_20240116::string_view::size() const [function] [call site] 00097
7 absl::lts_20240116::strings_internal::SplitIterator<absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> >::operator++() [function] [call site] 00098
7 absl::lts_20240116::strings_internal::SplitIterator<absl::lts_20240116::strings_internal::Splitter<absl::lts_20240116::ByChar, absl::lts_20240116::SkipEmpty, absl::lts_20240116::string_view> >::at_end() const [function] [call site] 00099
3 firebase::firestore::model::ResourcePath::ResourcePath(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> > > >&&) [function] [call site] 00100
4 firebase::firestore::model::impl::BasePath<firebase::firestore::model::ResourcePath>::BasePath(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> > > >&&) [function] [call site] 00101
1 firebase::firestore::model::ResourcePath::~ResourcePath() [function] [call site] 00102
2 firebase::firestore::model::impl::BasePath<firebase::firestore::model::ResourcePath>::~BasePath() [function] [call site] 00103
1 __cxa_begin_catch [call site] 00104
1 __cxa_end_catch [call site] 00105