Fuzz introspector: fuzz_atpointer
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 7 2 :

['simdjson::internal::dom_parser_implementation::allocate(unsigned long, unsigned long)', 'std::__1::unique_ptr >::operator->[abi:ne180100]() const']

0 7 simdjson::dom::parser::allocate(unsignedlong,unsignedlong) call site: 00000 /src/simdjson/include/simdjson/dom/parser-inl.h:204
0 0 None 0 133 simdjson::internal::adjusted_mantissasimdjson::internal::compute_float >(simdjson::internal::decimal&) call site: 00000 /src/simdjson/src/from_chars.cpp:487
0 0 None 0 116 simdjson::internal::adjusted_mantissasimdjson::internal::compute_float >(simdjson::internal::decimal&) call site: 00000 /src/simdjson/src/from_chars.cpp:508
0 0 None 0 95 simdjson::internal::adjusted_mantissasimdjson::internal::compute_float >(simdjson::internal::decimal&) call site: 00000 /src/simdjson/src/from_chars.cpp:521
0 0 None 0 85 simdjson::internal::detect_best_supported_implementation_on_first_use::set_best()const call site: 00000 /src/simdjson/src/implementation.cpp:284
0 0 None 0 0 simdjson::dom::document::allocate(unsignedlong) call site: 00000 /src/simdjson/include/simdjson/dom/document-inl.h:30
0 0 None 0 0 simdjson::dom::parser::ensure_capacity(simdjson::dom::document&,unsignedlong) call site: 00000 /src/simdjson/include/simdjson/dom/parser-inl.h:236
0 0 None 0 0 simdjson::internal::decimal_right_shift(simdjson::internal::decimal&,unsignedint) call site: 00000 /src/simdjson/src/from_chars.cpp:420
0 0 None 0 0 simdjson::internal::detect_supported_architectures() call site: 00000 /src/simdjson/src/internal/isadetection.h:179

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 FuzzData::FuzzData(unsigned char const*, unsigned long) [function] [call site] 00001
1 FuzzData::splitIntoStrings() [function] [call site] 00002
2 FuzzData::chardata() const [function] [call site] 00003
2 split(char const*, unsigned long) [function] [call site] 00004
1 __assert_fail [call site] 00005
1 simdjson::dom::document::document() [function] [call site] 00006
1 simdjson::padded_string::padded_string(std::__1::basic_string_view<char, std::__1::char_traits<char> >) [function] [call site] 00007
2 simdjson::internal::allocate_padded_buffer(unsigned long) [function] [call site] 00008
1 simdjson::padded_string::data() const [function] [call site] 00009
1 simdjson::padded_string::length() const [function] [call site] 00010
1 simdjson::dom::parser::parse(unsigned char const*, unsigned long, bool) & [function] [call site] 00011
2 simdjson::dom::parser::parse_into_document(simdjson::dom::document&, unsigned char const*, unsigned long, bool) & [function] [call site] 00012
3 simdjson::dom::parser::ensure_capacity(simdjson::dom::document&, unsigned long) [function] [call site] 00013
4 simdjson::dom::document::capacity() const [function] [call site] 00014
4 simdjson::dom::document::capacity() const [function] [call site] 00015
4 simdjson::dom::document::allocate(unsigned long) [function] [call site] 00016
4 simdjson::dom::parser::allocate(unsigned long, unsigned long) [function] [call site] 00017
5 simdjson::internal::dom_parser_implementation::allocate(unsigned long, unsigned long) [function] [call site] 00018
5 simdjson::get_active_implementation() [function] [call site] 00019
6 __cxa_guard_acquire [call site] 00020
6 __cxa_guard_release [call site] 00021
6 __cxa_guard_acquire [call site] 00022
6 simdjson::internal::atomic_ptr<simdjson::implementation const>::atomic_ptr(simdjson::implementation const*) [function] [call site] 00023
6 __cxa_guard_release [call site] 00024
5 simdjson::internal::atomic_ptr<simdjson::implementation const>::operator->() [function] [call site] 00025
5 __clang_call_terminate [call site] 00026
6 __cxa_begin_catch [call site] 00027
3 simdjson::internal::allocate_padded_buffer(unsigned long) [function] [call site] 00028
3 memcmp [call site] 00029
3 simdjson::dom::document::root() const [function] [call site] 00030
1 simdjson::padded_string::~padded_string() [function] [call site] 00031
1 simdjson::dom::element::at_pointer(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const [function] [call site] 00032
2 simdjson::dom::object::at_pointer(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const [function] [call site] 00033
3 simdjson::dom::object::at_key(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const [function] [call site] 00034
4 simdjson::dom::object::end() const [function] [call site] 00035
5 simdjson::internal::tape_ref::after_element() const [function] [call site] 00036
4 simdjson::dom::object::begin() const [function] [call site] 00037
4 simdjson::dom::object::iterator::operator!=(simdjson::dom::object::iterator const&) const [function] [call site] 00038
4 simdjson::dom::object::iterator::key_equals(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const [function] [call site] 00039
5 simdjson::dom::object::iterator::key_length() const [function] [call site] 00040
5 simdjson::dom::object::iterator::key_c_str() const [function] [call site] 00041
5 memcmp [call site] 00042
4 simdjson::dom::object::iterator::value() const [function] [call site] 00043
4 simdjson::dom::object::iterator::operator++() [function] [call site] 00044
5 simdjson::internal::tape_ref::after_element() const [function] [call site] 00045
3 simdjson::simdjson_result<simdjson::dom::element>::operator=(simdjson::simdjson_result<simdjson::dom::element>&&) [function] [call site] 00046
4 simdjson::internal::simdjson_result_base<simdjson::dom::element>::operator=(simdjson::internal::simdjson_result_base<simdjson::dom::element>&&) [function] [call site] 00047
3 simdjson::dom::object::at_key(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const [function] [call site] 00048
3 simdjson::simdjson_result<simdjson::dom::element>::operator=(simdjson::simdjson_result<simdjson::dom::element>&&) [function] [call site] 00049
3 simdjson::dom::element::at_pointer(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const [function] [call site] 00050
4 simdjson::dom::array::at_pointer(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const [function] [call site] 00051
5 simdjson::dom::array::at(unsigned long) const [function] [call site] 00052
6 simdjson::dom::array::begin() const [function] [call site] 00053
6 simdjson::dom::array::end() const [function] [call site] 00054
7 simdjson::internal::tape_ref::after_element() const [function] [call site] 00055
6 simdjson::dom::array::iterator::operator!=(simdjson::dom::array::iterator const&) const [function] [call site] 00056
6 simdjson::dom::array::iterator::operator*() const [function] [call site] 00057
6 simdjson::dom::array::iterator::operator++() [function] [call site] 00058
7 simdjson::internal::tape_ref::after_element() const [function] [call site] 00059
5 simdjson::dom::element::at_pointer(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const [function] [call site] 00060
6 simdjson::dom::is_pointer_well_formed(std::__1::basic_string_view<char, std::__1::char_traits<char> >) [function] [call site] 00061
5 simdjson::simdjson_result<simdjson::dom::element>::operator=(simdjson::simdjson_result<simdjson::dom::element>&&) [function] [call site] 00062
5 __clang_call_terminate [call site] 00063
3 simdjson::simdjson_result<simdjson::dom::element>::operator=(simdjson::simdjson_result<simdjson::dom::element>&&) [function] [call site] 00064
3 __clang_call_terminate [call site] 00065
1 simdjson::dom::element::get_string() const [function] [call site] 00066
2 simdjson::internal::tape_ref::get_string_view() const [function] [call site] 00067
1 simdjson::dom::parser::~parser() [function] [call site] 00068
2 simdjson::dom::document::~document() [function] [call site] 00069