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

Fuzzers overview

Fuzzer Fuzzer filename Functions Reached Functions unreached Fuzzer depth Files reached Basic blocks reached Cyclomatic complexity Details
fuzz_bson_parser_max /src/jsoncons/./fuzzers/fuzz_bson_parser_max.cpp 143 98 7 14 670 320 fuzz_bson_parser_max.cpp
fuzz_bson_encoder /src/jsoncons/./fuzzers/fuzz_bson_encoder.cpp 155 136 7 16 691 338 fuzz_bson_encoder.cpp
fuzz_ubjson_encoder /src/jsoncons/./fuzzers/fuzz_ubjson_encoder.cpp 158 131 7 13 680 409 fuzz_ubjson_encoder.cpp
fuzz_cbor_encoder /src/jsoncons/./fuzzers/fuzz_cbor_encoder.cpp 415 329 12 19 2419 1202 fuzz_cbor_encoder.cpp
fuzz_ubjson_parser_max /src/jsoncons/./fuzzers/fuzz_ubjson_parser_max.cpp 146 97 7 11 659 391 fuzz_ubjson_parser_max.cpp
fuzz_ubjson /src/jsoncons/./fuzzers/fuzz_ubjson.cpp 304 739 9 23 970 648 fuzz_ubjson.cpp
fuzz_cbor_parser_max /src/jsoncons/./fuzzers/fuzz_cbor_parser_max.cpp 385 226 12 17 2338 1147 fuzz_cbor_parser_max.cpp
fuzz_msgpack_encoder /src/jsoncons/./fuzzers/fuzz_msgpack_encoder.cpp 272 284 9 16 1250 718 fuzz_msgpack_encoder.cpp
fuzz_msgpack /src/jsoncons/./fuzzers/fuzz_msgpack.cpp 418 861 11 25 1533 923 fuzz_msgpack.cpp
fuzz_msgpack_parser_max /src/jsoncons/./fuzzers/fuzz_msgpack_parser_max.cpp 254 227 9 14 1215 660 fuzz_msgpack_parser_max.cpp
fuzz_bson /src/jsoncons/./fuzzers/fuzz_bson.cpp 301 740 8 26 981 577 fuzz_bson.cpp
fuzz_cbor /src/jsoncons/./fuzzers/fuzz_cbor.cpp 559 861 14 28 2666 1423 fuzz_cbor.cpp
fuzz_json_parser_max /src/jsoncons/./fuzzers/fuzz_json_parser_max.cpp 230 103 10 13 1742 612 fuzz_json_parser_max.cpp
fuzz_csv_encoder /src/jsoncons/./fuzzers/fuzz_csv_encoder.cpp 436 220 14 21 3387 1578 fuzz_csv_encoder.cpp
fuzz_csv /src/jsoncons/./fuzzers/fuzz_csv.cpp 479 764 15 23 3388 1609 fuzz_csv.cpp
fuzz_json_cursor /src/jsoncons/./fuzzers/fuzz_json_cursor.cpp 356 195 12 23 2356 986 fuzz_json_cursor.cpp
fuzz_parse /src/jsoncons/./fuzzers/fuzz_parse.cpp 302 690 10 16 1791 706 fuzz_parse.cpp
fuzz_json_encoder /src/jsoncons/./fuzzers/fuzz_json_encoder.cpp 267 285 10 16 1852 704 fuzz_json_encoder.cpp

Project functions overview

The following table shows data about each function in the project. The functions included in this table correspond to all functions that exist in the executables of the fuzzers. As such, there may be functions that are from third-party libraries.

For further technical details on the meaning of columns in the below table, please see the Glossary .

Func name Functions filename Args Function call depth Reached by Fuzzers Runtime reached by Fuzzers Combined reached by Fuzzers Fuzzers runtime hit Func lines hit % I Count BB Count Cyclomatic complexity Functions reached Reached by functions Accumulated cyclomatic complexity Undiscovered complexity

Fuzzer details

Fuzzer: fuzz_bson_parser_max

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 21 14.2%
gold [1:9] 5 3.40%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 121 82.3%
All colors 147 100

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 0 0 jsoncons::stream_source ::read(unsignedchar*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/source.hpp:254
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:198
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:198
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:198
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:198
0 0 None 0 0 jsoncons::bson::basic_bson_parser ,std::__1::allocator >::end_document(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/bson/bson_parser.hpp:280
0 0 None 0 0 jsoncons::bson::basic_bson_parser ,std::__1::allocator >::end_array(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/bson/bson_parser.hpp:328

Runtime coverage analysis

Covered functions
80
Functions that are reachable but not covered
25
Reachable functions
143
Percentage of reachable functions covered
82.52%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_bson_parser_max.cpp 1
/src/jsoncons/./include/jsoncons/json_visitor.hpp 17
/src/jsoncons/./include/jsoncons_ext/bson/bson_options.hpp 8
/src/jsoncons/./include/jsoncons_ext/bson/bson_reader.hpp 3
/src/jsoncons/./include/jsoncons_ext/bson/bson_parser.hpp 13
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 13
/src/jsoncons/./include/jsoncons/utility/binary.hpp 4
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 1
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_decimal128.hpp 3
/src/jsoncons/./include/jsoncons/utility/write_number.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_oid.hpp 5

Fuzzer: fuzz_bson_encoder

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 25 15.8%
gold [1:9] 5 3.16%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 128 81.0%
All colors 158 100

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 0 32 _ZN8jsoncons7utility10to_integerIjcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedntsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:387
0 0 None 0 32 _ZN8jsoncons7utility10to_integerIjcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedntsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:462
0 0 None 0 32 _ZN8jsoncons7utility10to_integerIjcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedntsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:462
0 0 None 0 32 _ZN8jsoncons7utility10to_integerIjcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedntsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:462
0 0 None 0 32 _ZN8jsoncons7utility10to_integerIjcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedntsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:462
0 0 None 0 32 _ZN8jsoncons7utility10to_integerIjcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedntsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:462
0 0 None 0 32 _ZN8jsoncons7utility10to_integerIjcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedntsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:462
0 0 None 0 32 _ZN8jsoncons7utility10to_integerIjcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedntsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:462
0 0 None 0 32 _ZN8jsoncons7utility10to_integerIjcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedntsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:462
0 0 None 0 23 jsoncons::bson::decimal128_from_chars(charconst*,charconst*,jsoncons::bson::TP1&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/bson/bson_decimal128.hpp:762
0 0 None 0 11 jsoncons::bson::decimal128_from_chars(charconst*,charconst*,jsoncons::bson::TP1&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/bson/bson_decimal128.hpp:751
0 0 None 0 4 jsoncons::bson::decimal128_from_chars(charconst*,charconst*,jsoncons::bson::TP1&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/bson/bson_decimal128.hpp:635

Runtime coverage analysis

Covered functions
116
Functions that are reachable but not covered
27
Reachable functions
155
Percentage of reachable functions covered
82.58%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_bson_encoder.cpp 1
/src/jsoncons/./include/jsoncons/sink.hpp 2
/src/jsoncons/./include/jsoncons_ext/bson/bson_encoder.hpp 3
/src/jsoncons/./include/jsoncons_ext/bson/bson_options.hpp 12
/src/jsoncons/./include/jsoncons/json_visitor.hpp 15
/src/jsoncons/./include/jsoncons_ext/bson/bson_reader.hpp 3
/src/jsoncons/./include/jsoncons_ext/bson/bson_parser.hpp 13
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 13
/src/jsoncons/./include/jsoncons/utility/binary.hpp 4
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 1
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_decimal128.hpp 3
/src/jsoncons/./include/jsoncons/utility/write_number.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_oid.hpp 5

Fuzzer: fuzz_ubjson_encoder

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 25 13.7%
gold [1:9] 0 0.0%
yellow [10:29] 8 4.39%
greenyellow [30:49] 2 1.09%
lawngreen 50+ 147 80.7%
All colors 182 100

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
51 56 7 :

['_ZNSt3__110error_codeC2B8ne180100IN8jsoncons6ubjson11ubjson_errcETnNS_9enable_ifIXsr18is_error_code_enumIT_EE5valueEiE4typeELi0EEES6_', 'std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(unsigned long, std::__1::back_insert_iterator >, void> >)', '__cxa_allocate_exception', 'std::__1::numeric_limits ::max[abi:ne180100]()', '__cxa_throw', '__cxa_free_exception', 'jsoncons::ser_error::ser_error(std::__1::error_code)']

51 58 jsoncons::ubjson::basic_ubjson_encoder >,void>,std::__1::allocator >::put_length(unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_encoder.hpp:329
8 8 7 :

['std::__1::basic_streambuf >::sgetn[abi:ne180100](char*, long)', '__cxa_begin_catch', 'std::__1::basic_ios >::eof[abi:ne180100]() const', '__cxa_end_catch', 'std::__1::basic_ios >::rdstate[abi:ne180100]() const', '__clang_call_terminate', 'std::__1::basic_ios >::clear[abi:ne180100](unsigned int)']

8 8 jsoncons::stream_source ::read(unsignedchar*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/source.hpp:238
0 15 6 :

['std::__1::numeric_limits ::max[abi:ne180100]()', 'std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(long, std::__1::back_insert_iterator >, void> >)', 'std::__1::numeric_limits ::max[abi:ne180100]()', 'std::__1::numeric_limits ::max[abi:ne180100]()', 'std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(short, std::__1::back_insert_iterator >, void> >)', 'std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(int, std::__1::back_insert_iterator >, void> >)']

0 24 jsoncons::ubjson::basic_ubjson_encoder >,void>,std::__1::allocator >::visit_uint64(unsignedlong,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_encoder.hpp:462
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 _ZN8jsoncons14unicode_traits13is_legal_utf8IcEENSt3__19enable_ifIXsr10ext_traits8is_char8IT_EE5valueENS0_9conv_errcEE4typeEPKS4_m call site: 00082 /src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp:338
0 0 None 0 0 jsoncons::ubjson::basic_ubjson_encoder >,void>,std::__1::allocator >::visit_end_object(jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_encoder.hpp:185
0 0 None 0 0 jsoncons::ubjson::basic_ubjson_encoder >,void>,std::__1::allocator >::visit_end_array(jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_encoder.hpp:240

Runtime coverage analysis

Covered functions
108
Functions that are reachable but not covered
25
Reachable functions
158
Percentage of reachable functions covered
84.18%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_ubjson_encoder.cpp 1
/src/jsoncons/./include/jsoncons/sink.hpp 2
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_encoder.hpp 3
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_options.hpp 13
/src/jsoncons/./include/jsoncons/json_visitor.hpp 16
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_reader.hpp 3
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_parser.hpp 13
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 14
/src/jsoncons/./include/jsoncons/utility/binary.hpp 14
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/utility/read_number.hpp 1
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 1

Fuzzer: fuzz_cbor_encoder

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 583 82.8%
gold [1:9] 106 15.0%
yellow [10:29] 8 1.13%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 7 0.99%
All colors 704 100

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
1805 1839 46 :

['jsoncons::detail::span ::span(unsigned int const*, unsigned long)', '_ZN8jsoncons24basic_item_event_visitorIcE17byte_string_valueINSt3__16vectorIhNS3_9allocatorIhEEEEEEbRKT_mRKNS_11ser_contextERNS3_10error_codeENS3_9enable_ifIXsr10ext_traits16is_byte_sequenceIS8_EE5valueEiE4typeE', 'bool jsoncons::basic_item_event_visitor ::typed_array (jsoncons::detail::span const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_item_event_visitor ::string_value(std::__1::basic_string_view > const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'bool jsoncons::basic_item_event_visitor ::typed_array (jsoncons::detail::span const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'bool jsoncons::basic_item_event_visitor ::typed_array (jsoncons::detail::span const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'std::__1::vector >::data[abi:ne180100]()', 'bool jsoncons::basic_item_event_visitor ::typed_array (jsoncons::detail::span const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', '_ZN8jsoncons6binary9byte_swapIjEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm4EES4_E4typeES4_', 'bool jsoncons::basic_item_event_visitor ::typed_array (jsoncons::detail::span const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_bigint >::operator=(jsoncons::basic_bigint > const&)', 'jsoncons::detail::span ::span(unsigned short const*, unsigned long)', '_ZN8jsoncons6binary9byte_swapIfEENSt3__19enable_ifIXaasr3std17is_floating_pointIT_EE5valueeqstS4_Lm4EES4_E4typeES4_', 'jsoncons::detail::span ::span(unsigned long const*, unsigned long)', 'std::__1::bitset<3ul>::operator[][abi:ne180100](unsigned long)', 'bool jsoncons::basic_item_event_visitor ::typed_array (jsoncons::detail::span const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::detail::span ::span(unsigned char const*, unsigned long)', 'jsoncons::basic_item_event_visitor ::typed_array(jsoncons::half_arg_t, jsoncons::detail::span const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'bool jsoncons::basic_item_event_visitor ::typed_array (jsoncons::detail::span const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::detail::span ::span(int const*, unsigned long)', 'jsoncons::operator-(jsoncons::basic_bigint >, jsoncons::basic_bigint > const&)', 'void jsoncons::basic_bigint >::write_string , std::__1::allocator >(std::__1::basic_string , std::__1::allocator >&) const', 'jsoncons::detail::span ::span(long const*, unsigned long)', 'jsoncons::detail::span ::span(short const*, unsigned long)', '_ZN8jsoncons6binary9byte_swapIsEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm2EES4_E4typeES4_', 'jsoncons::cbor::basic_cbor_parser , std::__1::allocator >::get_typed_array_endianness(unsigned char)', 'std::__1::basic_string , std::__1::allocator >::operator std::__1::basic_string_view >[abi:ne180100]() const', 'bool jsoncons::basic_item_event_visitor ::typed_array (jsoncons::detail::span const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'std::__1::vector >::size[abi:ne180100]() const', 'jsoncons::basic_bigint >::~basic_bigint()', '_ZN8jsoncons6binary9byte_swapImEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm8EES4_E4typeES4_', 'std::__1::basic_string , std::__1::allocator >::clear[abi:ne180100]()', '_ZN8jsoncons6binary9byte_swapIlEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm8EES4_E4typeES4_', 'bool jsoncons::basic_item_event_visitor ::typed_array (jsoncons::detail::span const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', '_ZN8jsoncons6binary9byte_swapIdEENSt3__19enable_ifIXaasr3std17is_floating_pointIT_EE5valueeqstS4_Lm8EES4_E4typeES4_', 'jsoncons::cbor::basic_cbor_parser , std::__1::allocator >::get_typed_array_bytes_per_element(unsigned char)', '_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2IiEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE', 'jsoncons::basic_bigint >::from_bytes_be(int, unsigned char const*, unsigned long)', 'jsoncons::detail::span ::span(float const*, unsigned long)', '_ZN8jsoncons6binary9byte_swapItEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm2EES4_E4typeES4_', 'jsoncons::detail::span ::span(signed char const*, unsigned long)', 'jsoncons::detail::span ::span(double const*, unsigned long)', 'bool jsoncons::basic_item_event_visitor ::typed_array (jsoncons::detail::span const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'std::__1::__bit_reference , true>::operator=[abi:ne180100](bool)', '_ZN8jsoncons6binary9byte_swapIiEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm4EES4_E4typeES4_', 'std::__1::vector >::clear[abi:ne180100]()']

1805 4479 voidjsoncons::cbor::basic_cbor_parser ,std::__1::allocator >::write_byte_string ,std::__1::allocator >::read_byte_string_from_source>(jsoncons::cbor::basic_cbor_parser ,std::__1::allocator >::read_byte_string_from_source,jsoncons::basic_item_event_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_parser.hpp:1565
35 63 15 :

['std::__1::map >, unsigned long, std::__1::less > >, std::__1::allocator > const, unsigned long> > >::end[abi:ne180100]()', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_uint64_value(unsigned long)', 'jsoncons::basic_byte_string >::basic_byte_string(unsigned char const*, unsigned long, std::__1::allocator const&)', 'jsoncons::byte_string_view::size() const', 'std::__1::pair >&>::type, std::__1::__unwrap_ref_decay ::type> std::__1::make_pair[abi:ne180100] >&, unsigned long>(jsoncons::basic_byte_string >&, unsigned long&&)', '_ZNSt3__19allocatorIhEC2B8ne180100IcEERKNS0_IT_EE', 'std::__1::__map_iterator >, unsigned long>, std::__1::__tree_node >, unsigned long>, void*>*, long> >::operator*[abi:ne180100]() const', 'jsoncons::basic_byte_string >::~basic_byte_string()', 'std::__1::pair >, unsigned long>::~pair()', 'jsoncons::byte_string_view::byte_string_view >(jsoncons::basic_byte_string > const&)', 'std::__1::operator==[abi:ne180100](std::__1::__map_iterator >, unsigned long>, std::__1::__tree_node >, unsigned long>, void*>*, long> > const&, std::__1::__map_iterator >, unsigned long>, std::__1::__tree_node >, unsigned long>, void*>*, long> > const&)', 'std::__1::map >, unsigned long, std::__1::less > >, std::__1::allocator > const, unsigned long> > >::find[abi:ne180100](jsoncons::basic_byte_string > const&)', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_tag(unsigned long)', 'std::__1::pair >, unsigned long>, std::__1::__tree_node >, unsigned long>, void*>*, long> >, bool> std::__1::map >, unsigned long, std::__1::less > >, std::__1::allocator > const, unsigned long> > >::emplace[abi:ne180100] >, unsigned long> >(std::__1::pair >, unsigned long>&&)', 'jsoncons::byte_string_view::data() const']

35 101 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_byte_string(jsoncons::byte_string_viewconst&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1001
27 39 6 :

['_ZN8jsoncons15bytes_to_base64IPKhNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS3_9enable_ifIXsr3std7is_sameINS3_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESC_SC_RT0_', '_ZN8jsoncons15bytes_to_base16IPKhNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS3_9enable_ifIXsr3std7is_sameINS3_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESC_SC_RT0_', '_ZN8jsoncons18bytes_to_base64urlIPKhNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS3_9enable_ifIXsr3std7is_sameINS3_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESC_SC_RT0_', 'jsoncons::byte_string_view::begin() const', 'jsoncons::byte_string_view::end() const', 'std::__1::basic_string , std::__1::allocator >::clear[abi:ne180100]()']

31 69 jsoncons::basic_item_event_visitor_to_json_visitor >::visit_byte_string(jsoncons::byte_string_viewconst&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/item_event_visitor.hpp:1124
24 24 2 :

['_ZN8jsoncons7utility12from_integerImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr10ext_traits10is_integerIT_EE5valueEmE4typeESA_RT0_', 'std::__1::basic_string , std::__1::allocator >::clear[abi:ne180100]()']

28 48 jsoncons::basic_item_event_visitor_to_json_visitor >::visit_uint64(unsignedlong,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/item_event_visitor.hpp:1238
8 8 7 :

['std::__1::basic_streambuf >::sgetn[abi:ne180100](char*, long)', '__cxa_begin_catch', 'std::__1::basic_ios >::eof[abi:ne180100]() const', '__cxa_end_catch', 'std::__1::basic_ios >::rdstate[abi:ne180100]() const', '__clang_call_terminate', 'std::__1::basic_ios >::clear[abi:ne180100](unsigned int)']

8 8 jsoncons::stream_source ::read(unsignedchar*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/source.hpp:238
2 551 12 :

['std::__1::basic_string , std::__1::allocator >::length[abi:ne180100]() const', 'jsoncons::cbor::basic_cbor_parser , std::__1::allocator >::handle_string(jsoncons::basic_item_event_visitor &, std::__1::basic_string_view > const&, std::__1::error_code&)', 'jsoncons::cbor::basic_cbor_parser , std::__1::allocator >::read_byte_string_from_buffer::read_byte_string_from_buffer(jsoncons::byte_string_view const&)', 'std::__1::vector , std::__1::allocator >::mapped_string, std::__1::allocator , std::__1::allocator >::mapped_string> >::size[abi:ne180100]() const', 'std::__1::error_code::operator bool[abi:ne180100]() const', 'std::__1::vector , std::__1::allocator >::mapped_string, std::__1::allocator , std::__1::allocator >::mapped_string> >::at(unsigned long)', 'void jsoncons::cbor::basic_cbor_parser , std::__1::allocator >::write_byte_string , std::__1::allocator >::read_byte_string_from_buffer>(jsoncons::cbor::basic_cbor_parser , std::__1::allocator >::read_byte_string_from_buffer, jsoncons::basic_item_event_visitor &, std::__1::error_code&)', 'std::__1::basic_string , std::__1::allocator >::data[abi:ne180100]()', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*, unsigned long)', '_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr10ext_traits16is_byte_sequenceIS7_EE5valueEiE4typeE', '_ZNSt3__110error_codeaSB8ne180100IN8jsoncons4cbor9cbor_errcETnNS_9enable_ifIXsr18is_error_code_enumIT_EE5valueEiE4typeELi0EEERS0_S6_', 'std::__1::vector , std::__1::allocator >::mapped_string, std::__1::allocator , std::__1::allocator >::mapped_string> >, std::__1::allocator , std::__1::allocator >::mapped_string, std::__1::allocator , std::__1::allocator >::mapped_string> > > >::back[abi:ne180100]()']

2 551 jsoncons::cbor::basic_cbor_parser ,std::__1::allocator >::read_item(jsoncons::basic_item_event_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_parser.hpp:421
0 82 2 :

['jsoncons::basic_item_event_visitor ::half_value(unsigned short, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::cbor::basic_cbor_parser , std::__1::allocator >::get_uint64_value(std::__1::error_code&)']

0 82 jsoncons::cbor::basic_cbor_parser ,std::__1::allocator >::read_item(jsoncons::basic_item_event_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_parser.hpp:540
0 15 3 :

['std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(unsigned short, std::__1::back_insert_iterator >, void> >)', 'std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(unsigned long, std::__1::back_insert_iterator >, void> >)', 'std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(unsigned int, std::__1::back_insert_iterator >, void> >)']

0 60 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::write_byte_string(jsoncons::byte_string_viewconst&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1058
0 15 8 :

['std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(unsigned long, std::__1::back_insert_iterator >, void> >)', 'std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(unsigned int, std::__1::back_insert_iterator >, void> >)', 'std::__1::numeric_limits ::max[abi:ne180100]()', 'std::__1::back_insert_iterator >, void> > std::__1::back_inserter[abi:ne180100] >, void> >(jsoncons::bytes_sink >, void>&)', 'std::__1::numeric_limits ::max[abi:ne180100]()', 'std::__1::numeric_limits ::max[abi:ne180100]()', 'std::__1::numeric_limits ::max[abi:ne180100]()', 'std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(unsigned short, std::__1::back_insert_iterator >, void> >)']

0 25 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::write_uint64_value(unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1225
0 2 2 :

['std::__1::basic_string , std::__1::allocator >::operator std::__1::basic_string_view >[abi:ne180100]() const', 'jsoncons::basic_json_visitor ::key(std::__1::basic_string_view > const&, jsoncons::ser_context const&, std::__1::error_code&)']

2 14 jsoncons::basic_item_event_visitor_to_json_visitor >::visit_byte_string(jsoncons::byte_string_viewconst&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/item_event_visitor.hpp:1141
0 2 2 :

['std::__1::basic_string , std::__1::allocator >::operator std::__1::basic_string_view >[abi:ne180100]() const', 'jsoncons::basic_json_visitor ::key(std::__1::basic_string_view > const&, jsoncons::ser_context const&, std::__1::error_code&)']

2 14 jsoncons::basic_item_event_visitor_to_json_visitor >::visit_uint64(unsignedlong,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/item_event_visitor.hpp:1244
0 0 None 17 8373 jsoncons::cbor::basic_cbor_parser ,std::__1::allocator >::parse(jsoncons::basic_item_event_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_parser.hpp:318

Runtime coverage analysis

Covered functions
96
Functions that are reachable but not covered
239
Reachable functions
415
Percentage of reachable functions covered
42.41%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_cbor_encoder.cpp 1
/src/jsoncons/./include/jsoncons/sink.hpp 3
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp 4
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_options.hpp 13
/src/jsoncons/./include/jsoncons/json_visitor.hpp 4
/src/jsoncons/./include/jsoncons/utility/binary.hpp 16
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_reader.hpp 3
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_parser.hpp 40
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 14
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 33
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 5
/src/jsoncons/./include/jsoncons/utility/bigint.hpp 56
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 1
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 1
/src/jsoncons/./include/jsoncons/detail/span.hpp 11
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_detail.hpp 1
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/utility/write_number.hpp 7

Fuzzer: fuzz_ubjson_parser_max

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 35 20.4%
gold [1:9] 19 11.1%
yellow [10:29] 20 11.6%
greenyellow [30:49] 5 2.92%
lawngreen 50+ 92 53.8%
All colors 171 100

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
8 8 7 :

['std::__1::basic_streambuf >::sgetn[abi:ne180100](char*, long)', '__cxa_begin_catch', 'std::__1::basic_ios >::eof[abi:ne180100]() const', '__cxa_end_catch', 'std::__1::basic_ios >::rdstate[abi:ne180100]() const', '__clang_call_terminate', 'std::__1::basic_ios >::clear[abi:ne180100](unsigned int)']

8 8 jsoncons::stream_source ::read(unsignedchar*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/source.hpp:238
0 0 None 17 2354 jsoncons::ubjson::basic_ubjson_parser ,std::__1::allocator >::parse(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_parser.hpp:224
0 0 None 0 2 jsoncons::ubjson::basic_ubjson_parser ,std::__1::allocator >::read_value(jsoncons::basic_json_visitor &,unsignedchar,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_parser.hpp:547
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 _ZN8jsoncons14unicode_traits8validateIcEENSt3__19enable_ifIXsr10ext_traits8is_char8IT_EE5valueENS0_14convert_resultIS4_EEE4typeEPKS4_m call site: 00072 /src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp:1141
0 0 None 0 0 _ZN8jsoncons14unicode_traits13is_legal_utf8IcEENSt3__19enable_ifIXsr10ext_traits8is_char8IT_EE5valueENS0_9conv_errcEE4typeEPKS4_m call site: 00073 /src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp:319
0 0 None 0 0 _ZN8jsoncons14unicode_traits13is_legal_utf8IcEENSt3__19enable_ifIXsr10ext_traits8is_char8IT_EE5valueENS0_9conv_errcEE4typeEPKS4_m call site: 00073 /src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp:338
0 0 None 0 0 jsoncons::ubjson::basic_ubjson_parser ,std::__1::allocator >::parse(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_parser.hpp:208

Runtime coverage analysis

Covered functions
82
Functions that are reachable but not covered
26
Reachable functions
146
Percentage of reachable functions covered
82.19%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_ubjson_parser_max.cpp 1
/src/jsoncons/./include/jsoncons/json_visitor.hpp 18
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_options.hpp 9
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_reader.hpp 3
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_parser.hpp 13
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 14
/src/jsoncons/./include/jsoncons/utility/binary.hpp 14
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/utility/read_number.hpp 1
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 1

Fuzzer: fuzz_ubjson

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 46 15.6%
gold [1:9] 0 0.0%
yellow [10:29] 1 0.34%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 247 84.0%
All colors 294 100

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
8 8 7 :

['std::__1::basic_streambuf >::sgetn[abi:ne180100](char*, long)', '__cxa_begin_catch', 'std::__1::basic_ios >::eof[abi:ne180100]() const', '__cxa_end_catch', 'std::__1::basic_ios >::rdstate[abi:ne180100]() const', '__clang_call_terminate', 'std::__1::basic_ios >::clear[abi:ne180100](unsigned int)']

8 8 jsoncons::stream_source ::read(unsignedchar*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/source.hpp:238
4 85 3 :

['jsoncons::basic_json >::object_range()', 'jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()']

4 85 jsoncons::basic_json >::object_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4438
4 61 3 :

['jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::array_range()', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()']

4 61 jsoncons::basic_json >::array_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4472
4 57 3 :

['jsoncons::basic_json >::push_back(jsoncons::basic_json >&&)', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()', 'jsoncons::basic_json >::json_reference_storage::value()']

4 57 jsoncons::basic_json >::push_back(jsoncons::basic_json >&&) call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4408
4 4 1 :

['jsoncons::detail::random_access_iterator_wrapper , std::__1::allocator >, jsoncons::basic_json > >*>, void>::random_access_iterator_wrapper()']

4 6 jsoncons::basic_json >::object_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4438
0 0 1 :

['std::__1::allocator ::deallocate[abi:ne180100](char*, unsigned long)']

19 27 jsoncons::utility::heap_string_factory >::create(charconst*,unsignedlong,jsoncons::null_type,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/heap_string.hpp:139
0 0 None 0 0 jsoncons::detail::random_access_iterator_wrapper ,std::__1::allocator >,jsoncons::basic_json >>*>,void>::operator==(jsoncons::detail::random_access_iterator_wrapper ,std::__1::allocator >,jsoncons::basic_json >>*>,void>const&)const call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:213
0 0 None 0 0 jsoncons::basic_json >::swap(jsoncons::basic_json >&) call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:1850
0 0 None 0 0 jsoncons::ser_error::to_what_arg(std::__1::error_code,charconst*,unsignedlong,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/json_exception.hpp:235
0 0 None 0 0 jsoncons::ser_error::to_what_arg(std::__1::error_code,charconst*,unsignedlong,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/json_exception.hpp:240
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/binary.hpp:183

Runtime coverage analysis

Covered functions
324
Functions that are reachable but not covered
47
Reachable functions
304
Percentage of reachable functions covered
84.54%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_ubjson.cpp 1
/src/jsoncons/./include/jsoncons_ext/ubjson/decode_ubjson.hpp 2
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_options.hpp 9
/src/jsoncons/./include/jsoncons/json_decoder.hpp 4
/src/jsoncons/./include/jsoncons/json_visitor.hpp 16
/src/jsoncons/./include/jsoncons/basic_json.hpp 30
/src/jsoncons/./include/jsoncons/utility/heap_string.hpp 6
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 4
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 3
/src/jsoncons/./include/jsoncons/allocator_holder.hpp 1
/src/jsoncons/./include/jsoncons/json_filter.hpp 5
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_reader.hpp 5
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_parser.hpp 15
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 15
/src/jsoncons/./include/jsoncons/utility/binary.hpp 14
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/utility/read_number.hpp 1
/src/jsoncons/./include/jsoncons/read_result.hpp 6
/src/jsoncons/./include/jsoncons/result.hpp 8
/src/jsoncons/./include/jsoncons/json_type.hpp 1
/src/jsoncons/./include/jsoncons/json_exception.hpp 4
/usr/local/bin/../include/c++/v1/__exception/exception.h 1

Fuzzer: fuzz_cbor_parser_max

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 92 13.6%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 583 86.3%
All colors 675 100

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
26 26 1 :

['_ZN8jsoncons7utility12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr10ext_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::utility::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:158
8 8 4 :

['__cxa_allocate_exception', 'std::runtime_error::runtime_error(char const*)', '__cxa_throw', '__cxa_free_exception']

8 8 jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >,jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,bool)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1391
0 715 9 :

['jsoncons::basic_bigint >::length() const', 'jsoncons::operator>(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::reduce()', 'jsoncons::basic_bigint >::operator=(jsoncons::basic_bigint > const&)', 'jsoncons::operator-(jsoncons::basic_bigint >, jsoncons::basic_bigint > const&)', 'jsoncons::operator<(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::is_negative() const', 'jsoncons::basic_bigint >::data()', 'jsoncons::basic_bigint >::basic_bigint(jsoncons::basic_bigint > const&)']

0 931 jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:617
0 356 3 :

['jsoncons::basic_bigint >::~basic_bigint()', '_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2ImEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE', 'jsoncons::basic_bigint >::operator/=(jsoncons::basic_bigint > const&)']

0 447 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1592
0 321 3 :

['jsoncons::basic_bigint >::operator-() const', 'jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::~basic_bigint()']

0 321 jsoncons::basic_bigint >::operator+=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:586
0 150 1 :

['jsoncons::basic_bigint >::operator*=(unsigned long)']

0 150 jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,int&)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1581
0 126 1 :

['bool jsoncons::utility::dtoa_fixed , std::__1::allocator > > >(double, char, jsoncons::string_sink , std::__1::allocator > >&)']

42 175 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510
0 40 1 :

['jsoncons::basic_bigint >::resize(unsigned long)']

0 185 jsoncons::basic_bigint >::operator>>=(unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:792
0 29 1 :

['bool jsoncons::utility::dtoa_scientific , std::__1::allocator > > >(double, char, jsoncons::string_sink , std::__1::allocator > >&)']

42 78 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510
0 7 1 :

['void jsoncons::utility::dump_buffer , std::__1::allocator > > >(char const*, unsigned long, char, jsoncons::string_sink , std::__1::allocator > >&)']

21 28 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:554
0 6 1 :

['jsoncons::string_sink , std::__1::allocator > >::push_back(char)']

0 6 booljsoncons::utility::dtoa_general ,std::__1::allocator >>>(double,char,jsoncons::string_sink ,std::__1::allocator >>&,std::__1::integral_constant ) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:331
0 0 None 17 19 _ZN8jsoncons7utility14integer_to_hexImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr10ext_traits10is_integerIT_EE5valueEmE4typeESA_RT0_ call site: 00572 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:99

Runtime coverage analysis

Covered functions
355
Functions that are reachable but not covered
35
Reachable functions
385
Percentage of reachable functions covered
90.91%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_cbor_parser_max.cpp 1
/src/jsoncons/./include/jsoncons/json_visitor.hpp 4
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_options.hpp 8
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_reader.hpp 3
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_parser.hpp 40
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 14
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 33
/src/jsoncons/./include/jsoncons/utility/binary.hpp 13
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 5
/src/jsoncons/./include/jsoncons/utility/bigint.hpp 56
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 1
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 1
/src/jsoncons/./include/jsoncons/detail/span.hpp 11
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_detail.hpp 1
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/utility/write_number.hpp 7

Fuzzer: fuzz_msgpack_encoder

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 99 22.6%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 339 77.3%
All colors 438 100

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
77 77 1 :

['jsoncons::basic_bigint >::operator>>=(unsigned long)']

77 77 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1596
51 51 5 :

['__cxa_allocate_exception', 'jsoncons::ser_error::ser_error(std::__1::error_code)', '__cxa_throw', '_ZNSt3__110error_codeC2B8ne180100IN8jsoncons7msgpack12msgpack_errcETnNS_9enable_ifIXsr18is_error_code_enumIT_EE5valueEiE4typeELi0EEES6_', '__cxa_free_exception']

51 51 jsoncons::msgpack::basic_msgpack_encoder >,void>,std::__1::allocator >::write_string_value(std::__1::basic_string_view >const&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_encoder.hpp:371
26 26 1 :

['_ZN8jsoncons7utility12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr10ext_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::utility::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:158
8 8 4 :

['__cxa_allocate_exception', 'std::runtime_error::runtime_error(char const*)', '__cxa_throw', '__cxa_free_exception']

8 8 jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >,jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,bool)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1391
0 715 9 :

['jsoncons::basic_bigint >::length() const', 'jsoncons::operator>(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::reduce()', 'jsoncons::basic_bigint >::operator=(jsoncons::basic_bigint > const&)', 'jsoncons::operator-(jsoncons::basic_bigint >, jsoncons::basic_bigint > const&)', 'jsoncons::operator<(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::is_negative() const', 'jsoncons::basic_bigint >::data()', 'jsoncons::basic_bigint >::basic_bigint(jsoncons::basic_bigint > const&)']

0 931 jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:617
0 356 3 :

['jsoncons::basic_bigint >::~basic_bigint()', '_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2ImEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE', 'jsoncons::basic_bigint >::operator/=(jsoncons::basic_bigint > const&)']

77 447 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1592
0 321 3 :

['jsoncons::basic_bigint >::operator-() const', 'jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::~basic_bigint()']

0 321 jsoncons::basic_bigint >::operator+=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:586
0 150 1 :

['jsoncons::basic_bigint >::operator*=(unsigned long)']

0 150 jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,int&)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1581
0 126 1 :

['bool jsoncons::utility::dtoa_fixed , std::__1::allocator > > >(double, char, jsoncons::string_sink , std::__1::allocator > >&)']

42 175 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510
0 84 2 :

['jsoncons::basic_bigint >::length() const', 'jsoncons::basic_bigint >::resize(unsigned long)']

0 781 jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >,jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,bool)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1445
0 29 1 :

['bool jsoncons::utility::dtoa_scientific , std::__1::allocator > > >(double, char, jsoncons::string_sink , std::__1::allocator > >&)']

42 78 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510
0 7 1 :

['void jsoncons::utility::dump_buffer , std::__1::allocator > > >(char const*, unsigned long, char, jsoncons::string_sink , std::__1::allocator > >&)']

21 28 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:554

Runtime coverage analysis

Covered functions
231
Functions that are reachable but not covered
41
Reachable functions
272
Percentage of reachable functions covered
84.93%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_msgpack_encoder.cpp 1
/src/jsoncons/./include/jsoncons/sink.hpp 2
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_encoder.hpp 3
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_options.hpp 12
/src/jsoncons/./include/jsoncons/json_visitor.hpp 4
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_reader.hpp 3
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_parser.hpp 10
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 13
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 17
/src/jsoncons/./include/jsoncons/utility/binary.hpp 20
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 3
/src/jsoncons/./include/jsoncons/utility/bigint.hpp 51
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 1
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 1

Fuzzer: fuzz_msgpack

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 118 21.4%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 432 78.5%
All colors 550 100

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
77 77 1 :

['jsoncons::basic_bigint >::operator>>=(unsigned long)']

77 77 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1596
26 26 1 :

['_ZN8jsoncons7utility12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr10ext_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::utility::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:158
8 8 4 :

['__cxa_allocate_exception', 'std::runtime_error::runtime_error(char const*)', '__cxa_throw', '__cxa_free_exception']

8 8 jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >,jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,bool)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1391
4 85 3 :

['jsoncons::basic_json >::object_range()', 'jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()']

4 85 jsoncons::basic_json >::object_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4438
4 61 3 :

['jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::array_range()', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()']

4 61 jsoncons::basic_json >::array_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4472
4 57 3 :

['jsoncons::basic_json >::push_back(jsoncons::basic_json >&&)', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()', 'jsoncons::basic_json >::json_reference_storage::value()']

4 57 jsoncons::basic_json >::push_back(jsoncons::basic_json >&&) call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4408
4 4 1 :

['jsoncons::detail::random_access_iterator_wrapper , std::__1::allocator >, jsoncons::basic_json > >*>, void>::random_access_iterator_wrapper()']

4 6 jsoncons::basic_json >::object_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4438
0 715 9 :

['jsoncons::basic_bigint >::length() const', 'jsoncons::operator>(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::reduce()', 'jsoncons::basic_bigint >::operator=(jsoncons::basic_bigint > const&)', 'jsoncons::operator-(jsoncons::basic_bigint >, jsoncons::basic_bigint > const&)', 'jsoncons::operator<(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::is_negative() const', 'jsoncons::basic_bigint >::data()', 'jsoncons::basic_bigint >::basic_bigint(jsoncons::basic_bigint > const&)']

0 931 jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:617
0 356 3 :

['jsoncons::basic_bigint >::~basic_bigint()', '_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2ImEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE', 'jsoncons::basic_bigint >::operator/=(jsoncons::basic_bigint > const&)']

77 447 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1592
0 321 3 :

['jsoncons::basic_bigint >::operator-() const', 'jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::~basic_bigint()']

0 321 jsoncons::basic_bigint >::operator+=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:586
0 150 1 :

['jsoncons::basic_bigint >::operator*=(unsigned long)']

0 150 jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,int&)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1581
0 126 1 :

['bool jsoncons::utility::dtoa_fixed , std::__1::allocator > > >(double, char, jsoncons::string_sink , std::__1::allocator > >&)']

42 175 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510

Runtime coverage analysis

Covered functions
484
Functions that are reachable but not covered
51
Reachable functions
418
Percentage of reachable functions covered
87.8%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_msgpack.cpp 1
/src/jsoncons/./include/jsoncons_ext/msgpack/decode_msgpack.hpp 2
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_options.hpp 8
/src/jsoncons/./include/jsoncons/json_decoder.hpp 4
/src/jsoncons/./include/jsoncons/json_visitor.hpp 4
/src/jsoncons/./include/jsoncons/basic_json.hpp 30
/src/jsoncons/./include/jsoncons/utility/heap_string.hpp 6
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 5
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 3
/src/jsoncons/./include/jsoncons/allocator_holder.hpp 1
/src/jsoncons/./include/jsoncons/json_filter.hpp 5
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_reader.hpp 5
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_parser.hpp 12
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 14
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 17
/src/jsoncons/./include/jsoncons/utility/binary.hpp 20
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 3
/src/jsoncons/./include/jsoncons/utility/bigint.hpp 51
/src/jsoncons/./include/jsoncons/read_result.hpp 6
/src/jsoncons/./include/jsoncons/result.hpp 8
/src/jsoncons/./include/jsoncons/json_type.hpp 1
/src/jsoncons/./include/jsoncons/json_exception.hpp 4
/usr/local/bin/../include/c++/v1/__exception/exception.h 1

Fuzzer: fuzz_msgpack_parser_max

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 105 24.7%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 320 75.2%
All colors 425 100

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
77 77 1 :

['jsoncons::basic_bigint >::operator>>=(unsigned long)']

77 77 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1596
26 26 1 :

['_ZN8jsoncons7utility12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr10ext_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::utility::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:158
8 8 4 :

['__cxa_allocate_exception', 'std::runtime_error::runtime_error(char const*)', '__cxa_throw', '__cxa_free_exception']

8 8 jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >,jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,bool)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1391
0 715 9 :

['jsoncons::basic_bigint >::length() const', 'jsoncons::operator>(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::reduce()', 'jsoncons::basic_bigint >::operator=(jsoncons::basic_bigint > const&)', 'jsoncons::operator-(jsoncons::basic_bigint >, jsoncons::basic_bigint > const&)', 'jsoncons::operator<(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::is_negative() const', 'jsoncons::basic_bigint >::data()', 'jsoncons::basic_bigint >::basic_bigint(jsoncons::basic_bigint > const&)']

0 931 jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:617
0 356 3 :

['jsoncons::basic_bigint >::~basic_bigint()', '_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2ImEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE', 'jsoncons::basic_bigint >::operator/=(jsoncons::basic_bigint > const&)']

77 447 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1592
0 321 3 :

['jsoncons::basic_bigint >::operator-() const', 'jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::~basic_bigint()']

0 321 jsoncons::basic_bigint >::operator+=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:586
0 150 1 :

['jsoncons::basic_bigint >::operator*=(unsigned long)']

0 150 jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,int&)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1581
0 126 1 :

['bool jsoncons::utility::dtoa_fixed , std::__1::allocator > > >(double, char, jsoncons::string_sink , std::__1::allocator > >&)']

42 175 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510
0 84 2 :

['jsoncons::basic_bigint >::length() const', 'jsoncons::basic_bigint >::resize(unsigned long)']

0 781 jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >,jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,bool)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1445
0 29 1 :

['bool jsoncons::utility::dtoa_scientific , std::__1::allocator > > >(double, char, jsoncons::string_sink , std::__1::allocator > >&)']

42 78 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510
0 7 1 :

['void jsoncons::utility::dump_buffer , std::__1::allocator > > >(char const*, unsigned long, char, jsoncons::string_sink , std::__1::allocator > >&)']

21 28 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:554
0 6 1 :

['jsoncons::string_sink , std::__1::allocator > >::push_back(char)']

0 6 booljsoncons::utility::dtoa_general ,std::__1::allocator >>>(double,char,jsoncons::string_sink ,std::__1::allocator >>&,std::__1::integral_constant ) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:331

Runtime coverage analysis

Covered functions
202
Functions that are reachable but not covered
37
Reachable functions
254
Percentage of reachable functions covered
85.43%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_msgpack_parser_max.cpp 1
/src/jsoncons/./include/jsoncons/json_visitor.hpp 4
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_options.hpp 8
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_reader.hpp 3
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_parser.hpp 10
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 13
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 17
/src/jsoncons/./include/jsoncons/utility/binary.hpp 20
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 3
/src/jsoncons/./include/jsoncons/utility/bigint.hpp 51
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 1
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 1

Fuzzer: fuzz_bson

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 33 12.2%
gold [1:9] 0 0.0%
yellow [10:29] 22 8.14%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 215 79.6%
All colors 270 100

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
4 85 3 :

['jsoncons::basic_json >::object_range()', 'jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()']

4 85 jsoncons::basic_json >::object_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4438
4 61 3 :

['jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::array_range()', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()']

4 61 jsoncons::basic_json >::array_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4472
4 57 3 :

['jsoncons::basic_json >::push_back(jsoncons::basic_json >&&)', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()', 'jsoncons::basic_json >::json_reference_storage::value()']

4 57 jsoncons::basic_json >::push_back(jsoncons::basic_json >&&) call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4408
4 4 1 :

['jsoncons::detail::random_access_iterator_wrapper , std::__1::allocator >, jsoncons::basic_json > >*>, void>::random_access_iterator_wrapper()']

4 6 jsoncons::basic_json >::object_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4438
0 1814 3 :

['jsoncons::basic_json >::swap(jsoncons::basic_json >&)', 'std::__1::vector > >, std::__1::allocator > > > >::front[abi:ne180100]()', 'std::__1::vector > >, std::__1::allocator > > > >::pop_back()']

0 1814 jsoncons::json_decoder >,std::__1::allocator >::visit_end_array(jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_decoder.hpp:203
0 0 1 :

['std::__1::allocator ::deallocate[abi:ne180100](char*, unsigned long)']

19 27 jsoncons::utility::heap_string_factory >::create(charconst*,unsignedlong,jsoncons::null_type,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/heap_string.hpp:139
0 0 1 :

['std::__1::allocator ::deallocate[abi:ne180100](char*, unsigned long)']

19 27 jsoncons::utility::heap_string_factory >::create(unsignedcharconst*,unsignedlong,unsignedlong,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/heap_string.hpp:139
0 0 None 0 0 jsoncons::detail::random_access_iterator_wrapper ,std::__1::allocator >,jsoncons::basic_json >>*>,void>::operator==(jsoncons::detail::random_access_iterator_wrapper ,std::__1::allocator >,jsoncons::basic_json >>*>,void>const&)const call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:213
0 0 None 0 0 jsoncons::basic_json >::swap(jsoncons::basic_json >&) call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:1850
0 0 None 0 0 jsoncons::ser_error::to_what_arg(std::__1::error_code,charconst*,unsignedlong,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/json_exception.hpp:235
0 0 None 0 0 jsoncons::ser_error::to_what_arg(std::__1::error_code,charconst*,unsignedlong,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/json_exception.hpp:240
0 0 None 0 0 jsoncons::stream_source ::read(unsignedchar*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/source.hpp:254

Runtime coverage analysis

Covered functions
353
Functions that are reachable but not covered
37
Reachable functions
301
Percentage of reachable functions covered
87.71%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_bson.cpp 1
/src/jsoncons/./include/jsoncons_ext/bson/decode_bson.hpp 2
/src/jsoncons/./include/jsoncons_ext/bson/bson_options.hpp 8
/src/jsoncons/./include/jsoncons/json_decoder.hpp 4
/src/jsoncons/./include/jsoncons/json_visitor.hpp 15
/src/jsoncons/./include/jsoncons/basic_json.hpp 30
/src/jsoncons/./include/jsoncons/utility/heap_string.hpp 6
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 4
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 3
/src/jsoncons/./include/jsoncons/allocator_holder.hpp 1
/src/jsoncons/./include/jsoncons/json_filter.hpp 5
/src/jsoncons/./include/jsoncons_ext/bson/bson_reader.hpp 5
/src/jsoncons/./include/jsoncons_ext/bson/bson_parser.hpp 15
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 14
/src/jsoncons/./include/jsoncons/utility/binary.hpp 4
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_decimal128.hpp 3
/src/jsoncons/./include/jsoncons/utility/write_number.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_oid.hpp 5
/src/jsoncons/./include/jsoncons/read_result.hpp 6
/src/jsoncons/./include/jsoncons/result.hpp 8
/src/jsoncons/./include/jsoncons/json_type.hpp 1
/src/jsoncons/./include/jsoncons/json_exception.hpp 4
/usr/local/bin/../include/c++/v1/__exception/exception.h 1

Fuzzer: fuzz_cbor

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 110 13.5%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 700 86.4%
All colors 810 100

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
26 26 1 :

['_ZN8jsoncons7utility12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr10ext_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::utility::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:158
8 8 4 :

['__cxa_allocate_exception', 'std::runtime_error::runtime_error(char const*)', '__cxa_throw', '__cxa_free_exception']

8 8 jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >,jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,bool)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1391
4 85 3 :

['jsoncons::basic_json >::object_range()', 'jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()']

4 85 jsoncons::basic_json >::object_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4438
4 61 3 :

['jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::array_range()', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()']

4 61 jsoncons::basic_json >::array_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4472
4 57 3 :

['jsoncons::basic_json >::push_back(jsoncons::basic_json >&&)', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()', 'jsoncons::basic_json >::json_reference_storage::value()']

4 57 jsoncons::basic_json >::push_back(jsoncons::basic_json >&&) call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4408
4 4 1 :

['jsoncons::detail::random_access_iterator_wrapper , std::__1::allocator >, jsoncons::basic_json > >*>, void>::random_access_iterator_wrapper()']

4 6 jsoncons::basic_json >::object_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4438
0 715 9 :

['jsoncons::basic_bigint >::length() const', 'jsoncons::operator>(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::reduce()', 'jsoncons::basic_bigint >::operator=(jsoncons::basic_bigint > const&)', 'jsoncons::operator-(jsoncons::basic_bigint >, jsoncons::basic_bigint > const&)', 'jsoncons::operator<(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::is_negative() const', 'jsoncons::basic_bigint >::data()', 'jsoncons::basic_bigint >::basic_bigint(jsoncons::basic_bigint > const&)']

0 931 jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:617
0 356 3 :

['jsoncons::basic_bigint >::~basic_bigint()', '_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2ImEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE', 'jsoncons::basic_bigint >::operator/=(jsoncons::basic_bigint > const&)']

0 447 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1592
0 321 3 :

['jsoncons::basic_bigint >::operator-() const', 'jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::~basic_bigint()']

0 321 jsoncons::basic_bigint >::operator+=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:586
0 150 1 :

['jsoncons::basic_bigint >::operator*=(unsigned long)']

0 150 jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,int&)const call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:1581
0 126 1 :

['bool jsoncons::utility::dtoa_fixed , std::__1::allocator > > >(double, char, jsoncons::string_sink , std::__1::allocator > >&)']

42 175 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510
0 40 1 :

['jsoncons::basic_bigint >::resize(unsigned long)']

0 185 jsoncons::basic_bigint >::operator>>=(unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/utility/bigint.hpp:792

Runtime coverage analysis

Covered functions
665
Functions that are reachable but not covered
59
Reachable functions
559
Percentage of reachable functions covered
89.45%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_cbor.cpp 1
/src/jsoncons/./include/jsoncons_ext/cbor/decode_cbor.hpp 2
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_options.hpp 8
/src/jsoncons/./include/jsoncons/json_decoder.hpp 4
/src/jsoncons/./include/jsoncons/json_visitor.hpp 4
/src/jsoncons/./include/jsoncons/basic_json.hpp 30
/src/jsoncons/./include/jsoncons/utility/heap_string.hpp 6
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 5
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 3
/src/jsoncons/./include/jsoncons/allocator_holder.hpp 1
/src/jsoncons/./include/jsoncons/json_filter.hpp 5
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_reader.hpp 5
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_parser.hpp 42
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 15
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 33
/src/jsoncons/./include/jsoncons/utility/binary.hpp 13
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 5
/src/jsoncons/./include/jsoncons/utility/bigint.hpp 56
/src/jsoncons/./include/jsoncons/detail/span.hpp 11
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_detail.hpp 1
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/utility/write_number.hpp 7
/src/jsoncons/./include/jsoncons/read_result.hpp 6
/src/jsoncons/./include/jsoncons/result.hpp 8
/src/jsoncons/./include/jsoncons/json_type.hpp 1
/src/jsoncons/./include/jsoncons/json_exception.hpp 8
/usr/local/bin/../include/c++/v1/__exception/exception.h 1

Fuzzer: fuzz_json_parser_max

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 50 16.8%
gold [1:9] 2 0.67%
yellow [10:29] 8 2.69%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 237 79.7%
All colors 297 100

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
4 4 2 :

['jsoncons::basic_json_options_common ::nan_to_str() const', 'nan']

8 14 jsoncons::basic_json_parser >::basic_json_parser(jsoncons::basic_json_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:200
2 2 1 :

['jsoncons::basic_json_options_common ::inf_to_str() const']

4 8 jsoncons::basic_json_parser >::basic_json_parser(jsoncons::basic_json_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:204
2 2 1 :

['jsoncons::ext_traits::integer_limits ::max()']

2 6 _ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00093 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:346
0 2 1 :

['jsoncons::basic_json_visitor ::double_value(double, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)']

0 35 jsoncons::basic_json_parser >::end_fraction_value(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:2485
0 2 2 :

['jsoncons::basic_json_visitor ::double_value(double, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'std::__1::__wrap_iter , std::__1::allocator >, double>*>::operator*[abi:ne180100]() const']

0 2 jsoncons::basic_json_parser >::end_string_value(charconst*,unsignedlong,jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:2529
0 2 2 :

['jsoncons::basic_json_visitor ::double_value(double, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'std::__1::__wrap_iter , std::__1::allocator >, double>*>::operator*[abi:ne180100]() const']

0 2 jsoncons::basic_json_parser >::end_string_value(charconst*,unsignedlong,jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:2545
0 0 None 17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:660
0 0 None 17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:768
0 0 None 17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:815
0 0 None 17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:849
0 0 None 17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:886
0 0 None 17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:896

Runtime coverage analysis

Covered functions
116
Functions that are reachable but not covered
36
Reachable functions
230
Percentage of reachable functions covered
84.35%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_json_parser_max.cpp 1
/src/jsoncons/./include/jsoncons/json_visitor.hpp 16
/src/jsoncons/./include/jsoncons/json_reader.hpp 7
/src/jsoncons/./include/jsoncons/json_options.hpp 16
/src/jsoncons/./include/jsoncons/source_adaptor.hpp 5
/src/jsoncons/./include/jsoncons/source.hpp 11
/src/jsoncons/./include/jsoncons/json_parser.hpp 34
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/detail/span.hpp 4
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 7
/src/jsoncons/./include/jsoncons/utility/read_number.hpp 10
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 2
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 1

Fuzzer: fuzz_csv_encoder

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 435 66.2%
gold [1:9] 3 0.45%
yellow [10:29] 0 0.0%
greenyellow [30:49] 4 0.60%
lawngreen 50+ 215 32.7%
All colors 657 100

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
3188 3536 25 :

['std::__1::basic_string , std::__1::allocator >::length[abi:ne180100]() const', 'jsoncons::basic_json_visitor ::bool_value(bool, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::csv::basic_csv_parser >::level() const', 'jsoncons::basic_json_parser >::basic_json_parser(std::__1::allocator const&)', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100]()', 'std::__1::vector >::size[abi:ne180100]() const', 'std::__1::basic_istringstream , std::__1::allocator >::~basic_istringstream()', 'std::__1::vector >::operator[][abi:ne180100](unsigned long)', 'std::__1::basic_string , std::__1::allocator >::data[abi:ne180100]()', 'std::__1::basic_istream >::operator>>(long&)', 'jsoncons::basic_json_visitor ::begin_array(jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'std::__1::basic_istringstream , std::__1::allocator >::basic_istringstream[abi:ne180100](std::__1::basic_string , std::__1::allocator > const&, unsigned int)', 'std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::operator[][abi:ne180100](unsigned long)', 'std::__1::basic_ios >::fail[abi:ne180100]() const', 'std::__1::basic_istream >::operator>>(double&)', 'jsoncons::basic_json_parser >::update(char const*, unsigned long)', 'std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::size[abi:ne180100]() const', 'jsoncons::basic_json_visitor ::null_value(jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_some(jsoncons::basic_json_visitor &)', 'jsoncons::basic_json_parser >::finish_parse(jsoncons::basic_json_visitor &)', 'jsoncons::basic_json_visitor ::end_array(jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_visitor ::int64_value(long, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_parser >::~basic_json_parser()', 'std::__1::basic_string , std::__1::allocator >::operator[][abi:ne180100](unsigned long)', 'jsoncons::basic_json_visitor ::double_value(double, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)']

3188 3542 jsoncons::csv::basic_csv_parser >::end_value(jsoncons::basic_json_visitor &,bool,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:1836
222 222 2 :

['jsoncons::csv::detail::m_columns_filter >::replay_parse_events(jsoncons::basic_json_visitor &, bool, int)', 'jsoncons::csv::detail::m_columns_filter >::done() const']

318 5432 jsoncons::csv::basic_csv_parser >::parse_some(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:897
24 24 1 :

['_ZN8jsoncons7utility12from_integerIiNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr10ext_traits10is_integerIT_EE5valueEmE4typeESA_RT0_']

24 24 voidjsoncons::utility::fill_exponent ,std::__1::allocator >>(int,std::__1::basic_string ,std::__1::allocator >&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:158
16 16 1 :

['jsoncons::csv::basic_csv_parser >::trim_string_buffer(bool, bool)']

18 3118 jsoncons::csv::basic_csv_parser >::end_quoted_string_value(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:1772
2 4 2 :

['jsoncons::csv::basic_csv_options_common ::nan_to_str() const', 'nan']

4 208 jsoncons::csv::basic_csv_parser >::basic_csv_parser(jsoncons::csv::basic_csv_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:667
2 2 5 :

['std::__1::basic_string , std::__1::allocator >::c_str[abi:ne180100]() const', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'std::__1::basic_string , std::__1::allocator >::operator[][abi:ne180100](unsigned long)', 'strtod', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100](char const*, unsigned long)']

2 8 jsoncons::utility::decstr_to_double(charconst*,unsignedlong,double&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:864
2 2 1 :

['jsoncons::ext_traits::integer_limits ::max()']

2 6 _ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00223 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:346
0 124 1 :

['bool jsoncons::utility::dtoa_fixed , std::__1::allocator > >(double, char, std::__1::basic_string , std::__1::allocator >&)']

42 171 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>(double,std::__1::basic_string ,std::__1::allocator >&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510
0 77 2 :

['jsoncons::csv::basic_csv_encoder , std::__1::allocator > >, std::__1::allocator >::visit_string(std::__1::basic_string_view > const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'std::__1::basic_string , std::__1::allocator >::operator std::__1::basic_string_view >[abi:ne180100]() const']

0 77 jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::write_double_value(double,jsoncons::ser_contextconst&,std::__1::basic_string ,std::__1::allocator >&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_encoder.hpp:1356
0 77 2 :

['jsoncons::csv::basic_csv_encoder , std::__1::allocator > >, std::__1::allocator >::visit_string(std::__1::basic_string_view > const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'std::__1::basic_string , std::__1::allocator >::operator std::__1::basic_string_view >[abi:ne180100]() const']

0 77 jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::write_double_value(double,jsoncons::ser_contextconst&,std::__1::basic_string ,std::__1::allocator >&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_encoder.hpp:1371
0 27 1 :

['bool jsoncons::utility::dtoa_scientific , std::__1::allocator > >(double, char, std::__1::basic_string , std::__1::allocator >&)']

42 74 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>(double,std::__1::basic_string ,std::__1::allocator >&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510
0 24 9 :

['_ZN8jsoncons7utility12from_integerImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr10ext_traits10is_integerIT_EE5valueEmE4typeESA_RT0_', 'std::__1::basic_string , std::__1::allocator >::push_back(char)', 'std::__1::pair , std::__1::allocator >, std::__1::basic_string , std::__1::allocator > >, void*>*> >, bool> std::__1::unordered_map , std::__1::allocator >, std::__1::basic_string , std::__1::allocator >, std::__1::hash , std::__1::allocator > >, std::__1::equal_to , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > const, std::__1::basic_string , std::__1::allocator > > > >::emplace[abi:ne180100] , std::__1::allocator >&, std::__1::basic_string , std::__1::allocator > >(std::__1::basic_string , std::__1::allocator >&, std::__1::basic_string , std::__1::allocator >&&)', 'std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::begin[abi:ne180100]()', 'std::__1::pair , std::__1::allocator >, std::__1::basic_string , std::__1::allocator > >, void*>*> >, bool> std::__1::unordered_map , std::__1::allocator >, std::__1::basic_string , std::__1::allocator >, std::__1::hash , std::__1::allocator > >, std::__1::equal_to , std::__1::allocator > >, std::__1::allocator , std::__1::allocator > const, std::__1::basic_string , std::__1::allocator > > > >::emplace[abi:ne180100] , std::__1::allocator >, std::__1::basic_string , std::__1::allocator > const&>(std::__1::basic_string , std::__1::allocator >&&, std::__1::basic_string , std::__1::allocator > const&)', 'std::__1::__wrap_iter , std::__1::allocator >*>::operator*[abi:ne180100]() const', 'std::__1::__wrap_iter , std::__1::allocator >*>::operator++[abi:ne180100]()', 'std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::end[abi:ne180100]()', 'bool std::__1::operator!=[abi:ne180100] , std::__1::allocator >*>(std::__1::__wrap_iter , std::__1::allocator >*> const&, std::__1::__wrap_iter , std::__1::allocator >*> const&)']

58 82 jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_begin_array(jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_encoder.hpp:511

Runtime coverage analysis

Covered functions
167
Functions that are reachable but not covered
162
Reachable functions
436
Percentage of reachable functions covered
62.84%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_csv_encoder.cpp 1
/src/jsoncons/./include/jsoncons/sink.hpp 3
/src/jsoncons/./include/jsoncons_ext/csv/csv_encoder.hpp 3
/src/jsoncons/./include/jsoncons_ext/csv/csv_options.hpp 53
/src/jsoncons/./include/jsoncons/json_visitor.hpp 28
/src/jsoncons/./include/jsoncons/utility/write_number.hpp 1
/src/jsoncons/./include/jsoncons_ext/csv/csv_reader.hpp 5
/src/jsoncons/./include/jsoncons/source_adaptor.hpp 4
/src/jsoncons/./include/jsoncons/source.hpp 11
/src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp 25
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 2
/src/jsoncons/./include/jsoncons/detail/span.hpp 4
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 6
/src/jsoncons/./include/jsoncons/json_parser.hpp 32
/src/jsoncons/./include/jsoncons/json_options.hpp 16
/src/jsoncons/./include/jsoncons/utility/read_number.hpp 10
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 2
/src/jsoncons/./include/jsoncons/json_exception.hpp 6
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 3

Fuzzer: fuzz_csv

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 438 63.2%
gold [1:9] 2 0.28%
yellow [10:29] 1 0.14%
greenyellow [30:49] 2 0.28%
lawngreen 50+ 250 36.0%
All colors 693 100

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
3188 3536 25 :

['std::__1::basic_string , std::__1::allocator >::length[abi:ne180100]() const', 'jsoncons::basic_json_visitor ::bool_value(bool, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::csv::basic_csv_parser >::level() const', 'jsoncons::basic_json_parser >::basic_json_parser(std::__1::allocator const&)', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100]()', 'std::__1::vector >::size[abi:ne180100]() const', 'std::__1::basic_istringstream , std::__1::allocator >::~basic_istringstream()', 'std::__1::vector >::operator[][abi:ne180100](unsigned long)', 'std::__1::basic_string , std::__1::allocator >::data[abi:ne180100]()', 'std::__1::basic_istream >::operator>>(long&)', 'jsoncons::basic_json_visitor ::begin_array(jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'std::__1::basic_istringstream , std::__1::allocator >::basic_istringstream[abi:ne180100](std::__1::basic_string , std::__1::allocator > const&, unsigned int)', 'std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::operator[][abi:ne180100](unsigned long)', 'std::__1::basic_ios >::fail[abi:ne180100]() const', 'std::__1::basic_istream >::operator>>(double&)', 'jsoncons::basic_json_parser >::update(char const*, unsigned long)', 'std::__1::vector , std::__1::allocator >, std::__1::allocator , std::__1::allocator > > >::size[abi:ne180100]() const', 'jsoncons::basic_json_visitor ::null_value(jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_some(jsoncons::basic_json_visitor &)', 'jsoncons::basic_json_parser >::finish_parse(jsoncons::basic_json_visitor &)', 'jsoncons::basic_json_visitor ::end_array(jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_visitor ::int64_value(long, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_parser >::~basic_json_parser()', 'std::__1::basic_string , std::__1::allocator >::operator[][abi:ne180100](unsigned long)', 'jsoncons::basic_json_visitor ::double_value(double, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)']

3188 3542 jsoncons::csv::basic_csv_parser >::end_value(jsoncons::basic_json_visitor &,bool,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:1836
222 222 2 :

['jsoncons::csv::detail::m_columns_filter >::replay_parse_events(jsoncons::basic_json_visitor &, bool, int)', 'jsoncons::csv::detail::m_columns_filter >::done() const']

318 5432 jsoncons::csv::basic_csv_parser >::parse_some(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:897
16 16 1 :

['jsoncons::csv::basic_csv_parser >::trim_string_buffer(bool, bool)']

18 3118 jsoncons::csv::basic_csv_parser >::end_quoted_string_value(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:1772
16 16 1 :

['jsoncons::csv::basic_csv_parser >::trim_string_buffer(bool, bool)']

16 18 jsoncons::csv::basic_csv_parser >::before_value(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:1474
4 61 3 :

['jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()', 'jsoncons::basic_json >::array_range()']

4 61 jsoncons::basic_json >::array_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4472
4 57 3 :

['jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::push_back(jsoncons::basic_json >&&)', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()']

4 57 jsoncons::basic_json >::push_back(jsoncons::basic_json >&&) call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4408
4 4 2 :

['jsoncons::csv::basic_csv_options_common ::nan_to_str() const', 'nan']

10 208 jsoncons::csv::basic_csv_parser >::basic_csv_parser(jsoncons::csv::basic_csv_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:667
2 2 1 :

['jsoncons::csv::basic_csv_options_common ::inf_to_str() const']

6 202 jsoncons::csv::basic_csv_parser >::basic_csv_parser(jsoncons::csv::basic_csv_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:671
2 2 3 :

['jsoncons::csv::basic_csv_options_common ::neginf_to_str() const', 'std::__1::numeric_limits ::infinity[abi:ne180100]()', 'std::__1::pair , std::__1::allocator >, double>& std::__1::vector , std::__1::allocator >, double>, std::__1::allocator , std::__1::allocator >, double> > >::emplace_back , std::__1::allocator >, double>(std::__1::basic_string , std::__1::allocator >&&, double&&)']

4 198 jsoncons::csv::basic_csv_parser >::basic_csv_parser(jsoncons::csv::basic_csv_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:675
2 2 5 :

['std::__1::basic_string , std::__1::allocator >::c_str[abi:ne180100]() const', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'std::__1::basic_string , std::__1::allocator >::operator[][abi:ne180100](unsigned long)', 'strtod', 'std::__1::basic_string , std::__1::allocator >::basic_string[abi:ne180100](char const*, unsigned long)']

2 8 jsoncons::utility::decstr_to_double(charconst*,unsignedlong,double&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:864
2 2 1 :

['jsoncons::ext_traits::integer_limits ::max()']

2 6 _ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00223 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:346
0 2 1 :

['jsoncons::basic_json_visitor ::null_value(jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)']

0 2 jsoncons::csv::basic_csv_parser >::end_unquoted_string_value(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp:1709

Runtime coverage analysis

Covered functions
220
Functions that are reachable but not covered
193
Reachable functions
479
Percentage of reachable functions covered
59.71%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_csv.cpp 1
/src/jsoncons/./include/jsoncons/json_decoder.hpp 2
/src/jsoncons/./include/jsoncons/json_visitor.hpp 28
/src/jsoncons/./include/jsoncons/basic_json.hpp 16
/src/jsoncons/./include/jsoncons/utility/heap_string.hpp 6
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 6
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 4
/src/jsoncons/./include/jsoncons/allocator_holder.hpp 1
/src/jsoncons/./include/jsoncons_ext/csv/csv_options.hpp 44
/src/jsoncons/./include/jsoncons_ext/csv/csv_reader.hpp 6
/src/jsoncons/./include/jsoncons/source_adaptor.hpp 3
/src/jsoncons/./include/jsoncons/source.hpp 4
/src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp 27
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/detail/span.hpp 4
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 6
/src/jsoncons/./include/jsoncons/json_parser.hpp 32
/src/jsoncons/./include/jsoncons/json_options.hpp 16
/src/jsoncons/./include/jsoncons/utility/read_number.hpp 10
/src/jsoncons/./include/jsoncons/json_exception.hpp 14
/usr/local/bin/../include/c++/v1/__exception/exception.h 2
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 3
/usr/local/bin/../include/c++/v1/stdexcept 1

Fuzzer: fuzz_json_cursor

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 180 41.6%
gold [1:9] 21 4.86%
yellow [10:29] 6 1.38%
greenyellow [30:49] 2 0.46%
lawngreen 50+ 223 51.6%
All colors 432 100

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
24 24 1 :

['_ZN8jsoncons7utility12from_integerIiNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr10ext_traits10is_integerIT_EE5valueEmE4typeESA_RT0_']

24 24 voidjsoncons::utility::fill_exponent ,std::__1::allocator >>(int,std::__1::basic_string ,std::__1::allocator >&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:158
4 4 2 :

['jsoncons::basic_json_options_common ::nan_to_str() const', 'nan']

8 14 jsoncons::basic_json_parser >::basic_json_parser(jsoncons::basic_json_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:200
2 2 1 :

['jsoncons::basic_json_options_common ::inf_to_str() const']

4 8 jsoncons::basic_json_parser >::basic_json_parser(jsoncons::basic_json_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:204
2 2 1 :

['jsoncons::ext_traits::integer_limits ::max()']

2 6 _ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00090 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:346
0 124 1 :

['bool jsoncons::utility::dtoa_fixed , std::__1::allocator > >(double, char, std::__1::basic_string , std::__1::allocator >&)']

42 171 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>(double,std::__1::basic_string ,std::__1::allocator >&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510
0 27 1 :

['bool jsoncons::utility::dtoa_scientific , std::__1::allocator > >(double, char, std::__1::basic_string , std::__1::allocator >&)']

42 74 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>(double,std::__1::basic_string ,std::__1::allocator >&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510
0 5 1 :

['void jsoncons::utility::dump_buffer , std::__1::allocator > >(char const*, unsigned long, char, std::__1::basic_string , std::__1::allocator >&)']

21 26 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>(double,std::__1::basic_string ,std::__1::allocator >&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:554
0 2 1 :

['jsoncons::basic_json_visitor ::double_value(double, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)']

0 35 jsoncons::basic_json_parser >::end_fraction_value(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:2485
0 2 2 :

['jsoncons::basic_json_visitor ::double_value(double, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'std::__1::__wrap_iter , std::__1::allocator >, double>*>::operator*[abi:ne180100]() const']

0 2 jsoncons::basic_json_parser >::end_string_value(charconst*,unsignedlong,jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:2545
0 0 None 17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:660
0 0 None 17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:1332
0 0 None 17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:1401

Runtime coverage analysis

Covered functions
153
Functions that are reachable but not covered
87
Reachable functions
356
Percentage of reachable functions covered
75.56%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_json_cursor.cpp 1
/src/jsoncons/./include/jsoncons/json_cursor.hpp 9
/src/jsoncons/./include/jsoncons/json_options.hpp 16
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/staj_cursor.hpp 5
/src/jsoncons/./include/jsoncons/source_adaptor.hpp 4
/src/jsoncons/./include/jsoncons/source.hpp 10
/src/jsoncons/./include/jsoncons/json_parser.hpp 34
/src/jsoncons/./include/jsoncons/json_visitor.hpp 14
/src/jsoncons/./include/jsoncons/staj_event.hpp 4
/src/jsoncons/./include/jsoncons/typed_array_view.hpp 1
/src/jsoncons/./include/jsoncons/detail/span.hpp 5
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 7
/src/jsoncons/./include/jsoncons/utility/read_number.hpp 10
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 2
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 1
/src/jsoncons/./include/jsoncons/value_converter.hpp 18
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp 7
/src/jsoncons/./include/jsoncons/utility/write_number.hpp 15
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1
/src/jsoncons/./include/jsoncons/json_exception.hpp 2
/usr/local/bin/../include/c++/v1/stdexcept 1
/src/jsoncons/./include/jsoncons/detail/grisu3.hpp 12

Fuzzer: fuzz_parse

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 66 18.7%
gold [1:9] 7 1.98%
yellow [10:29] 2 0.56%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 277 78.6%
All colors 352 100

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
17 2686 26 :

['jsoncons::basic_json_parser >::push_state(jsoncons::parse_state)', 'jsoncons::basic_json_visitor ::bool_value(bool, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_visitor ::flush()', 'jsoncons::basic_json_parser >::parse_null(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'std::__1::basic_string , std::__1::allocator >::push_back(char)', 'jsoncons::basic_json_parser >::begin_object(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_false(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'std::__1::basic_string , std::__1::allocator >::clear[abi:ne180100]()', 'jsoncons::basic_json_parser >::skip_space(char const**)', 'jsoncons::basic_json_parser >::pop_state()', 'jsoncons::basic_json_parser >::parse_number(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::assertion_error::assertion_error(std::__1::basic_string , std::__1::allocator > const&)', 'jsoncons::basic_json_parser >::parent() const', '__cxa_throw', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'jsoncons::basic_json_parser >::end_object(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_string(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_visitor ::null_value(jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_parser >::end_array(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_parser >::begin_array(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'std::__1::error_code::operator bool[abi:ne180100]() const', '__cxa_allocate_exception', 'jsoncons::basic_json_parser >::begin_member_or_element(std::__1::error_code&)', '__cxa_free_exception', 'jsoncons::basic_json_parser >::parse_true(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)']

17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:1326
17 2686 26 :

['jsoncons::basic_json_parser >::push_state(jsoncons::parse_state)', 'jsoncons::basic_json_visitor ::bool_value(bool, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_visitor ::flush()', 'jsoncons::basic_json_parser >::parse_null(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'std::__1::basic_string , std::__1::allocator >::push_back(char)', 'jsoncons::basic_json_parser >::begin_object(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_false(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'std::__1::basic_string , std::__1::allocator >::clear[abi:ne180100]()', 'jsoncons::basic_json_parser >::skip_space(char const**)', 'jsoncons::basic_json_parser >::pop_state()', 'jsoncons::basic_json_parser >::parse_number(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::assertion_error::assertion_error(std::__1::basic_string , std::__1::allocator > const&)', 'jsoncons::basic_json_parser >::parent() const', '__cxa_throw', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'jsoncons::basic_json_parser >::end_object(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_string(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_visitor ::null_value(jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_parser >::end_array(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_parser >::begin_array(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'std::__1::error_code::operator bool[abi:ne180100]() const', '__cxa_allocate_exception', 'jsoncons::basic_json_parser >::begin_member_or_element(std::__1::error_code&)', '__cxa_free_exception', 'jsoncons::basic_json_parser >::parse_true(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)']

17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:1395
17 2686 26 :

['jsoncons::basic_json_parser >::push_state(jsoncons::parse_state)', 'jsoncons::basic_json_visitor ::bool_value(bool, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_visitor ::flush()', 'jsoncons::basic_json_parser >::parse_null(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'std::__1::basic_string , std::__1::allocator >::push_back(char)', 'jsoncons::basic_json_parser >::begin_object(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_false(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', 'std::__1::basic_string , std::__1::allocator >::clear[abi:ne180100]()', 'jsoncons::basic_json_parser >::skip_space(char const**)', 'jsoncons::basic_json_parser >::pop_state()', 'jsoncons::basic_json_parser >::parse_number(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::assertion_error::assertion_error(std::__1::basic_string , std::__1::allocator > const&)', 'jsoncons::basic_json_parser >::parent() const', '__cxa_throw', '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100ILi0EEEPKc', 'jsoncons::basic_json_parser >::end_object(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_string(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_visitor ::null_value(jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::basic_json_parser >::end_array(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'jsoncons::basic_json_parser >::begin_array(jsoncons::basic_json_visitor &, std::__1::error_code&)', 'std::__1::error_code::operator bool[abi:ne180100]() const', '__cxa_allocate_exception', 'jsoncons::basic_json_parser >::begin_member_or_element(std::__1::error_code&)', '__cxa_free_exception', 'jsoncons::basic_json_parser >::parse_true(char const*, jsoncons::basic_json_visitor &, std::__1::error_code&)']

17 2686 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:1450
4 85 3 :

['jsoncons::basic_json >::object_range()', 'jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()']

4 85 jsoncons::basic_json >::object_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4438
4 61 3 :

['jsoncons::basic_json >::json_reference_storage::value()', 'jsoncons::basic_json >::array_range()', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()']

4 61 jsoncons::basic_json >::array_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4472
4 57 3 :

['jsoncons::basic_json >::push_back(jsoncons::basic_json >&&)', 'jsoncons::basic_json >::json_reference_storage& jsoncons::basic_json >::cast >::json_reference_storage>()', 'jsoncons::basic_json >::json_reference_storage::value()']

4 57 jsoncons::basic_json >::push_back(jsoncons::basic_json >&&) call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4408
4 4 2 :

['jsoncons::basic_json_options_common ::nan_to_str() const', 'nan']

8 14 jsoncons::basic_json_parser >::basic_json_parser(jsoncons::basic_json_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:200
4 4 1 :

['jsoncons::detail::random_access_iterator_wrapper , std::__1::allocator >, jsoncons::basic_json > >*>, void>::random_access_iterator_wrapper()']

4 6 jsoncons::basic_json >::object_range() call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:4438
2 2 1 :

['jsoncons::basic_json_options_common ::inf_to_str() const']

4 8 jsoncons::basic_json_parser >::basic_json_parser(jsoncons::basic_json_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:204
2 2 1 :

['jsoncons::ext_traits::integer_limits ::max()']

2 6 _ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00103 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:346
0 2 1 :

['jsoncons::basic_json_visitor ::double_value(double, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)']

0 35 jsoncons::basic_json_parser >::end_fraction_value(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:2485
0 2 2 :

['jsoncons::basic_json_visitor ::double_value(double, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'std::__1::__wrap_iter , std::__1::allocator >, double>*>::operator*[abi:ne180100]() const']

0 2 jsoncons::basic_json_parser >::end_string_value(charconst*,unsignedlong,jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:2529

Runtime coverage analysis

Covered functions
306
Functions that are reachable but not covered
53
Reachable functions
302
Percentage of reachable functions covered
82.45%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_parse.cpp 1
/src/jsoncons/./include/jsoncons/json_options.hpp 21
/src/jsoncons/./include/jsoncons/basic_json.hpp 31
/src/jsoncons/./include/jsoncons/json_decoder.hpp 4
/src/jsoncons/./include/jsoncons/json_visitor.hpp 14
/src/jsoncons/./include/jsoncons/utility/heap_string.hpp 6
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 6
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 3
/src/jsoncons/./include/jsoncons/allocator_holder.hpp 1
/src/jsoncons/./include/jsoncons/json_parser.hpp 36
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 6
/src/jsoncons/./include/jsoncons/json_exception.hpp 7
/usr/local/bin/../include/c++/v1/__exception/exception.h 1
/src/jsoncons/./include/jsoncons/utility/read_number.hpp 10
/src/jsoncons/./include/jsoncons/json_type.hpp 1

Fuzzer: fuzz_json_encoder

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 52 16.1%
gold [1:9] 2 0.62%
yellow [10:29] 2 0.62%
greenyellow [30:49] 4 1.24%
lawngreen 50+ 262 81.3%
All colors 322 100

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
26 26 1 :

['_ZN8jsoncons7utility12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr10ext_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::utility::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:158
23 23 1 :

['jsoncons::basic_json_encoder , std::__1::allocator > >, std::__1::allocator >::break_line()']

65 2167 jsoncons::basic_json_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_double(double,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_encoder.hpp:806
23 23 1 :

['jsoncons::basic_json_encoder , std::__1::allocator > >, std::__1::allocator >::break_line()']

23 613 jsoncons::basic_json_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_string(std::__1::basic_string_view >const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_encoder.hpp:682
23 23 3 :

['jsoncons::basic_json_encoder , std::__1::allocator > >, std::__1::allocator >::encoding_context::data_pos() const', 'jsoncons::basic_json_encoder , std::__1::allocator > >, std::__1::allocator >::new_line(unsigned long)', 'jsoncons::basic_json_encode_options ::line_length_limit() const']

23 128 jsoncons::basic_json_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_key(std::__1::basic_string_view >const&,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_encoder.hpp:630
23 23 1 :

['jsoncons::basic_json_encoder , std::__1::allocator > >, std::__1::allocator >::break_line()']

23 92 jsoncons::basic_json_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_bool(bool,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_encoder.hpp:928
23 23 1 :

['jsoncons::basic_json_encoder , std::__1::allocator > >, std::__1::allocator >::break_line()']

23 60 jsoncons::basic_json_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_null(jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_encoder.hpp:661
23 23 1 :

['jsoncons::basic_json_encoder , std::__1::allocator > >, std::__1::allocator >::break_line()']

23 54 jsoncons::basic_json_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_uint64(unsignedlong,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_encoder.hpp:909
23 23 1 :

['jsoncons::basic_json_encoder , std::__1::allocator > >, std::__1::allocator >::break_line()']

23 54 jsoncons::basic_json_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_int64(long,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_encoder.hpp:887
4 4 2 :

['jsoncons::basic_json_options_common ::nan_to_str() const', 'nan']

8 14 jsoncons::basic_json_parser >::basic_json_parser(jsoncons::basic_json_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:200
2 2 1 :

['jsoncons::basic_json_options_common ::inf_to_str() const']

4 8 jsoncons::basic_json_parser >::basic_json_parser(jsoncons::basic_json_decode_options const&,std::__1::function ,std::__1::allocator const&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:204
2 2 1 :

['jsoncons::ext_traits::integer_limits ::max()']

2 6 _ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ call site: 00116 /src/jsoncons/./include/jsoncons/utility/read_number.hpp:346
0 126 1 :

['bool jsoncons::utility::dtoa_fixed , std::__1::allocator > > >(double, char, jsoncons::string_sink , std::__1::allocator > >&)']

42 175 unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/utility/write_number.hpp:510

Runtime coverage analysis

Covered functions
191
Functions that are reachable but not covered
37
Reachable functions
267
Percentage of reachable functions covered
86.14%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/jsoncons/./fuzzers/fuzz_json_encoder.cpp 1
/src/jsoncons/./include/jsoncons/sink.hpp 3
/src/jsoncons/./include/jsoncons/json_encoder.hpp 3
/src/jsoncons/./include/jsoncons/json_options.hpp 27
/src/jsoncons/./include/jsoncons/json_visitor.hpp 16
/src/jsoncons/./include/jsoncons/utility/write_number.hpp 1
/src/jsoncons/./include/jsoncons/json_reader.hpp 7
/src/jsoncons/./include/jsoncons/source_adaptor.hpp 5
/src/jsoncons/./include/jsoncons/source.hpp 11
/src/jsoncons/./include/jsoncons/json_parser.hpp 34
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/detail/span.hpp 4
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp 7
/src/jsoncons/./include/jsoncons/utility/read_number.hpp 10
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp 2
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 1

Analyses and suggestions

Optimal target analysis

Remaining optimal interesting functions

The following table shows a list of functions that are optimal targets. Optimal targets are identified by finding the functions that in combination, yield a high code coverage.

Func name Functions filename Arg count Args Function depth hitcount instr count bb count cyclomatic complexity Reachable functions Incoming references total cyclomatic complexity Unreached complexity
jsoncons::json_decoder >,std::__1::allocator >::visit_end_array(jsoncons::ser_contextconst&,std::__1::error_code&) /src/jsoncons/./include/jsoncons/json_decoder.hpp 3 ['N/A', 'N/A', 'N/A'] 13 0 292 42 3 1012 0 1930 1837
jsoncons::json_decoder >,std::__1::allocator >::visit_end_array(jsoncons::ser_contextconst&,std::__1::error_code&) /src/jsoncons/./include/jsoncons/json_decoder.hpp 3 ['N/A', 'N/A', 'N/A'] 13 0 292 42 3 1012 0 1930 1810
jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_key(std::__1::basic_string_view >const&,jsoncons::ser_contextconst&,std::__1::error_code&) /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp 4 ['N/A', 'N/A', 'N/A', 'N/A'] 15 0 28 3 2 227 0 1103 654
jsoncons::basic_json_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_double(double,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) /src/jsoncons/./include/jsoncons/json_encoder.hpp 5 ['N/A', 'double', 'char', 'N/A', 'N/A'] 14 0 540 63 5 290 0 885 298
jsoncons::order_preserving_json_object ,std::__1::allocator >,jsoncons::basic_json >,std::__1::vector>::~order_preserving_json_object() /src/jsoncons/./include/jsoncons/json_object.hpp 1 ['N/A'] 8 0 18 3 2 213 0 377 237
jsoncons::sorted_json_object ,std::__1::allocator >,jsoncons::basic_json >,std::__1::vector>::~sorted_json_object() /src/jsoncons/./include/jsoncons/json_object.hpp 1 ['N/A'] 8 0 18 3 2 213 0 377 212
jsoncons::bson::basic_bson_encoder >,void>,std::__1::allocator >::visit_string(std::__1::basic_string_view >const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) /src/jsoncons/./include/jsoncons_ext/bson/bson_encoder.hpp 5 ['N/A', 'N/A', 'char', 'N/A', 'N/A'] 4 0 425 41 10 59 0 215 181

Implementing fuzzers that target the above functions will improve reachability such that it becomes:

Functions statically reachable by fuzzers
74.0%
1920 / 2600
Cyclomatic complexity statically reachable by fuzzers
78.0%
9545 / 12214

All functions overview

If you implement fuzzers for these functions, the status of all functions in the project will be:

Func name Functions filename Args Function call depth Reached by Fuzzers Runtime reached by Fuzzers Combined reached by Fuzzers Fuzzers runtime hit Func lines hit % I Count BB Count Cyclomatic complexity Functions reached Reached by functions Accumulated cyclomatic complexity Undiscovered complexity

Fuzz engine guidance

This sections provides heuristics that can be used as input to a fuzz engine when running a given fuzz target. The current focus is on providing input that is usable by libFuzzer.

/src/jsoncons/./fuzzers/fuzz_bson_parser_max.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['LLVMFuzzerTestOneInput', 'jsoncons::stream_source::fill_buffer()', 'jsoncons::bson::basic_bson_parser, std::__1::allocator >::basic_bson_parser, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::bson::bson_decode_options const&, std::__1::allocator const&)', 'jsoncons::stream_source::stream_source(std::__1::basic_istream >&, unsigned long)', 'jsoncons::bson::basic_bson_parser, std::__1::allocator >::basic_bson_parser, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::bson::bson_decode_options const&, std::__1::allocator const&)', 'jsoncons::stream_source::read(unsigned char*, unsigned long)', 'jsoncons::bson::basic_bson_parser, std::__1::allocator >::end_document(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::bson::basic_bson_reader, std::__1::allocator >::basic_bson_reader, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::basic_json_visitor&, jsoncons::bson::bson_decode_options const&, std::__1::allocator const&)', 'jsoncons::bson::basic_bson_parser, std::__1::allocator >::basic_bson_parser, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::bson::bson_decode_options const&, std::__1::allocator const&)']

/src/jsoncons/./fuzzers/fuzz_bson_encoder.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['LLVMFuzzerTestOneInput', 'jsoncons::stream_source::fill_buffer()', 'jsoncons::bson::basic_bson_encoder >, void>, std::__1::allocator >::basic_bson_encoder(jsoncons::bytes_sink >, void>&&, std::__1::allocator const&)', 'jsoncons::bson::basic_bson_parser, std::__1::allocator >::basic_bson_parser, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::bson::bson_decode_options const&, std::__1::allocator const&)', 'jsoncons::stream_source::stream_source(std::__1::basic_istream >&, unsigned long)', 'jsoncons::bson::basic_bson_parser, std::__1::allocator >::basic_bson_parser, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::bson::bson_decode_options const&, std::__1::allocator const&)', 'jsoncons::stream_source::read(unsigned char*, unsigned long)', 'jsoncons::bson::basic_bson_parser, std::__1::allocator >::end_document(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::bson::basic_bson_encoder >, void>, std::__1::allocator >::basic_bson_encoder(jsoncons::bytes_sink >, void>&&, std::__1::allocator const&)', 'jsoncons::bson::basic_bson_encoder >, void>, std::__1::allocator >::basic_bson_encoder(jsoncons::bytes_sink >, void>&&, std::__1::allocator const&)']

/src/jsoncons/./fuzzers/fuzz_ubjson_encoder.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::stream_source::fill_buffer()', 'LLVMFuzzerTestOneInput', 'jsoncons::ubjson::basic_ubjson_encoder >, void>, std::__1::allocator >::basic_ubjson_encoder(jsoncons::bytes_sink >, void>&&, std::__1::allocator const&)', 'jsoncons::ubjson::basic_ubjson_parser, std::__1::allocator >::basic_ubjson_parser, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::ubjson::ubjson_decode_options const&, std::__1::allocator const&)', 'jsoncons::stream_source::stream_source(std::__1::basic_istream >&, unsigned long)', 'jsoncons::ubjson::basic_ubjson_parser, std::__1::allocator >::parse(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::ubjson::basic_ubjson_encoder >, void>, std::__1::allocator >::basic_ubjson_encoder(jsoncons::bytes_sink >, void>&&, std::__1::allocator const&)', 'jsoncons::ubjson::basic_ubjson_encoder >, void>, std::__1::allocator >::basic_ubjson_encoder(jsoncons::bytes_sink >, void>&&, std::__1::allocator const&)', 'jsoncons::ubjson::basic_ubjson_encoder >, void>, std::__1::allocator >::basic_ubjson_encoder(jsoncons::bytes_sink >, void>&&, jsoncons::ubjson::ubjson_encode_options const&, std::__1::allocator const&)']

/src/jsoncons/./fuzzers/fuzz_cbor_encoder.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::cbor::basic_cbor_parser, std::__1::allocator >::read_item(jsoncons::basic_item_event_visitor&, std::__1::error_code&)', 'std::__1::enable_if::type jsoncons::binary::big_to_native(unsigned char const*, unsigned long)', '_ZN8jsoncons24basic_item_event_visitorIcE17byte_string_valueINSt3__16vectorIhNS3_9allocatorIhEEEEEEbRKT_NS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeENS3_9enable_ifIXsr10ext_traits16is_byte_sequenceIS8_EE5valueEiE4typeE', 'jsoncons::cbor::basic_cbor_parser, std::__1::allocator >::read_text_string(std::__1::basic_string, std::__1::allocator >&, std::__1::error_code&)', 'jsoncons::cbor::basic_cbor_parser, std::__1::allocator >::read_byte_string(std::__1::vector >&, std::__1::error_code&)', 'jsoncons::cbor::basic_cbor_parser, std::__1::allocator >::get_int64_value(std::__1::error_code&)', 'jsoncons::cbor::basic_cbor_parser, std::__1::allocator >::read_item(jsoncons::basic_item_event_visitor&, std::__1::error_code&)', 'jsoncons::cbor::basic_cbor_parser, std::__1::allocator >::parse(jsoncons::basic_item_event_visitor&, std::__1::error_code&)', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::basic_cbor_encoder(jsoncons::bytes_sink >, void>&&, jsoncons::cbor::cbor_encode_options const&, std::__1::allocator const&)', 'LLVMFuzzerTestOneInput']

/src/jsoncons/./fuzzers/fuzz_ubjson_parser_max.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::stream_source::fill_buffer()', 'LLVMFuzzerTestOneInput', 'jsoncons::ubjson::basic_ubjson_parser, std::__1::allocator >::basic_ubjson_parser, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::ubjson::ubjson_decode_options const&, std::__1::allocator const&)', 'jsoncons::stream_source::stream_source(std::__1::basic_istream >&, unsigned long)', 'jsoncons::ubjson::basic_ubjson_parser, std::__1::allocator >::read_value(jsoncons::basic_json_visitor&, unsigned char, std::__1::error_code&)', 'jsoncons::ubjson::basic_ubjson_parser, std::__1::allocator >::read_value(jsoncons::basic_json_visitor&, unsigned char, std::__1::error_code&)', 'std::__1::enable_if::type jsoncons::binary::big_to_native(unsigned char const*, unsigned long)', 'jsoncons::ubjson::basic_ubjson_parser, std::__1::allocator >::parse(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::ubjson::basic_ubjson_reader, std::__1::allocator >::basic_ubjson_reader, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::basic_json_visitor&, jsoncons::ubjson::ubjson_decode_options const&, std::__1::allocator const&)']

/src/jsoncons/./fuzzers/fuzz_ubjson.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::utility::heap_string_factory >::destroy(jsoncons::utility::heap_string >*)', 'jsoncons::stream_source::fill_buffer()', '_ZN8jsoncons6ubjson17try_decode_ubjsonINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEENS4_9enable_ifIXsr10ext_traits13is_basic_jsonIT_EE5valueENS_6resultIS9_NS_10read_errorEEEE4typeERNS4_13basic_istreamIcNS4_11char_traitsIcEEEERKNS0_21ubjson_decode_optionsE', 'void jsoncons::basic_json >::construct >::null_storage>()', 'jsoncons::ubjson::basic_ubjson_parser, std::__1::allocator >::basic_ubjson_parser >&>(std::__1::basic_istream >&, jsoncons::ubjson::ubjson_decode_options const&, std::__1::allocator const&)', 'jsoncons::stream_source::stream_source(std::__1::basic_istream >&, unsigned long)', 'jsoncons::ubjson::basic_ubjson_parser, std::__1::allocator >::parse(jsoncons::basic_json_visitor&, std::__1::error_code&)']

/src/jsoncons/./fuzzers/fuzz_cbor_parser_max.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::operator=(jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::operator>>=(unsigned long)', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, int&) const', 'LLVMFuzzerTestOneInput', 'jsoncons::stream_source::fill_buffer()', 'jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint > const&)', 'jsoncons::cbor::basic_cbor_parser, std::__1::allocator >::basic_cbor_parser, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::cbor::cbor_decode_options const&, std::__1::allocator const&)']

/src/jsoncons/./fuzzers/fuzz_msgpack_encoder.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::operator=(jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, int&) const', 'jsoncons::operator<(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'LLVMFuzzerTestOneInput', 'jsoncons::msgpack::basic_msgpack_reader, std::__1::allocator >::basic_msgpack_reader, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::basic_json_visitor&, jsoncons::msgpack::msgpack_decode_options const&, std::__1::allocator const&)', 'jsoncons::stream_source::fill_buffer()', 'jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint > const&)']

/src/jsoncons/./fuzzers/fuzz_msgpack.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::operator=(jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, int&) const', 'jsoncons::operator<(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', '_ZN8jsoncons7msgpack18try_decode_msgpackINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEENS4_9enable_ifIXsr10ext_traits13is_basic_jsonIT_EE5valueENS_6resultIS9_NS_10read_errorEEEE4typeERNS4_13basic_istreamIcNS4_11char_traitsIcEEEERKNS0_22msgpack_decode_optionsE', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::msgpack::basic_msgpack_reader, std::__1::allocator >::basic_msgpack_reader >&>(std::__1::basic_istream >&, jsoncons::basic_json_visitor&, jsoncons::msgpack::msgpack_decode_options const&, std::__1::allocator const&)']

/src/jsoncons/./fuzzers/fuzz_msgpack_parser_max.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::operator=(jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, int&) const', 'jsoncons::operator<(jsoncons::basic_bigint > const&, jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'LLVMFuzzerTestOneInput', 'jsoncons::msgpack::basic_msgpack_reader, std::__1::allocator >::basic_msgpack_reader, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::basic_json_visitor&, jsoncons::msgpack::msgpack_decode_options const&, std::__1::allocator const&)', 'jsoncons::stream_source::fill_buffer()']

/src/jsoncons/./fuzzers/fuzz_bson.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['_ZN8jsoncons4bson15try_decode_bsonINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEENS4_9enable_ifIXsr10ext_traits13is_basic_jsonIT_EE5valueENS_6resultIS9_NS_10read_errorEEEE4typeERNS4_13basic_istreamIcNS4_11char_traitsIcEEEERKNS0_19bson_decode_optionsE', 'jsoncons::bson::basic_bson_parser, std::__1::allocator >::basic_bson_parser >&>(std::__1::basic_istream >&, jsoncons::bson::bson_decode_options const&, std::__1::allocator const&)', 'jsoncons::stream_source::stream_source(std::__1::basic_istream >&, unsigned long)', 'jsoncons::bson::basic_bson_parser, std::__1::allocator >::basic_bson_parser >&>(std::__1::basic_istream >&, jsoncons::bson::bson_decode_options const&, std::__1::allocator const&)', 'jsoncons::stream_source::fill_buffer()', 'jsoncons::stream_source::read(unsigned char*, unsigned long)', 'jsoncons::bson::basic_bson_parser, std::__1::allocator >::end_document(jsoncons::basic_json_visitor&, std::__1::error_code&)']

/src/jsoncons/./fuzzers/fuzz_cbor.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::operator=(jsoncons::basic_bigint > const&)', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', 'jsoncons::basic_bigint >::operator>>=(unsigned long)', 'jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >, jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, bool) const', '_ZN8jsoncons4cbor15try_decode_cborINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEENS4_9enable_ifIXsr10ext_traits13is_basic_jsonIT_EE5valueENS_6resultIS9_NS_10read_errorEEEE4typeERNS4_13basic_istreamIcNS4_11char_traitsIcEEEERKNS0_19cbor_decode_optionsE', 'jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&, jsoncons::basic_bigint >&, int&) const', 'jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint > const&)', 'LLVMFuzzerTestOneInput']

/src/jsoncons/./fuzzers/fuzz_json_parser_max.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::basic_json_reader, std::__1::allocator >::check_done(std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::stream_source::stream_source(std::__1::basic_istream >&, unsigned long)', 'jsoncons::stream_source::fill_buffer()', '_ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_', 'jsoncons::json_source_adaptor >::json_source_adaptor, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&)', 'jsoncons::basic_json_parser >::basic_json_parser(jsoncons::basic_json_decode_options const&, std::__1::function, std::__1::allocator const&)', 'jsoncons::basic_json_reader, std::__1::allocator >::basic_json_reader, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::basic_json_visitor&, std::__1::allocator const&)', 'jsoncons::basic_json_parser >::parent() const']

/src/jsoncons/./fuzzers/fuzz_csv_encoder.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::csv::basic_csv_parser >::parse_some(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::utility::decstr_to_double(char const*, unsigned long, double&)', 'jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::csv::basic_csv_parser >::end_unquoted_string_value(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'void jsoncons::csv::detail::parse_column_types > >(std::__1::basic_string, std::__1::allocator > const&, std::__1::vector >&)', '_ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_', 'jsoncons::csv::basic_csv_parser >::end_value(jsoncons::basic_json_visitor&, bool, std::__1::error_code&)', 'jsoncons::csv::basic_csv_parser >::end_quoted_string_value(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::csv::basic_csv_parser >::parse_some(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::csv::basic_csv_parser >::parse_some(jsoncons::basic_json_visitor&, std::__1::error_code&)']

/src/jsoncons/./fuzzers/fuzz_csv.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::csv::basic_csv_parser >::parse_some(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::utility::decstr_to_double(char const*, unsigned long, double&)', 'jsoncons::ser_error::ser_error(std::__1::error_code, unsigned long, unsigned long)', 'jsoncons::csv::basic_csv_parser >::end_unquoted_string_value(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'void jsoncons::csv::detail::parse_column_types > >(std::__1::basic_string, std::__1::allocator > const&, std::__1::vector >&)', '_ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_', 'jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::csv::basic_csv_parser >::end_value(jsoncons::basic_json_visitor&, bool, std::__1::error_code&)', 'jsoncons::utility::heap_string_factory >::destroy(jsoncons::utility::heap_string >*)', 'jsoncons::csv::basic_csv_parser >::end_quoted_string_value(jsoncons::basic_json_visitor&, std::__1::error_code&)']

/src/jsoncons/./fuzzers/fuzz_json_cursor.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::basic_json_parser >::parse_false(char const*, jsoncons::basic_json_visitor&, std::__1::error_code&)', 'void jsoncons::utility::prettify_string, std::__1::allocator > >(char const*, unsigned long, int, int, int, std::__1::basic_string, std::__1::allocator >&)', 'jsoncons::utility::write_double::write_double(jsoncons::float_chars_format, int)', 'jsoncons::value_converter >, std::__1::basic_string, std::__1::allocator >, void>::convert(std::__1::basic_string_view > const&, jsoncons::semantic_tag, std::__1::error_code&)', 'bool jsoncons::utility::dtoa_general, std::__1::allocator > >(double, char, std::__1::basic_string, std::__1::allocator >&, std::__1::integral_constant)', 'jsoncons::value_converter, std::__1::allocator >, void>::convert(long, jsoncons::semantic_tag, std::__1::error_code&)', 'jsoncons::basic_json_parser >::end_string_value(char const*, unsigned long, jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::stream_source::fill_buffer()', '_ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_']

/src/jsoncons/./fuzzers/fuzz_parse.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE5parseINS2_12basic_stringIcNS2_11char_traitsIcEES4_EEEENS2_9enable_ifIXsr10ext_traits14is_sequence_ofIT_cEE5valueES5_E4typeERKSC_RKNS_25basic_json_decode_optionsIcEE', 'jsoncons::utility::heap_string_factory >::destroy(jsoncons::utility::heap_string >*)', 'void jsoncons::basic_json >::construct >::null_storage>()', 'jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'LLVMFuzzerTestOneInput', '_ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_', 'jsoncons::basic_json_parser >::parse_some(jsoncons::basic_json_visitor&)', 'jsoncons::basic_json_parser >::basic_json_parser(jsoncons::basic_json_decode_options const&, std::__1::function, std::__1::allocator const&)']

/src/jsoncons/./fuzzers/fuzz_json_encoder.cpp

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['jsoncons::basic_json_reader, std::__1::allocator >::check_done(std::__1::error_code&)', 'jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor&, std::__1::error_code&)', 'jsoncons::stream_source::stream_source(std::__1::basic_istream >&, unsigned long)', 'jsoncons::stream_source::fill_buffer()', '_ZN8jsoncons7utility14dec_to_integerIlcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_', 'jsoncons::json_source_adaptor >::json_source_adaptor, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&)', 'jsoncons::basic_json_parser >::basic_json_parser(jsoncons::basic_json_decode_options const&, std::__1::function, std::__1::allocator const&)', 'jsoncons::basic_json_reader, std::__1::allocator >::basic_json_reader, std::__1::allocator >&>(std::__1::basic_istringstream, std::__1::allocator >&, jsoncons::basic_json_visitor&, std::__1::allocator const&)', 'jsoncons::basic_json_parser >::parent() const']

Runtime coverage analysis

This section shows analysis of runtime coverage data.

For futher technical details on how this section is generated, please see the Glossary .

Complex functions with low coverage

Func name Function total lines Lines covered at runtime percentage covered Reached by fuzzers
_ZN8jsoncons7utility10to_integerIjcEENSt3__19enable_ifIXaasr10ext_traits14integer_limitsIT_EE14is_specializedntsr10ext_traits14integer_limitsIS4_EE9is_signedENS0_16to_number_resultIT0_EEE4typeEPKS6_mRS4_ 176 44 25.0% ['fuzz_bson_encoder']
jsoncons::bson::basic_bson_encoder >,void>,std::__1::allocator >::visit_uint64(unsignedlong,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 52 27 51.92% ['fuzz_bson_encoder']
jsoncons::bson::basic_bson_encoder >,void>,std::__1::allocator >::visit_int64(long,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 53 26 49.05% ['fuzz_bson_encoder']
jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_byte_string(jsoncons::byte_string_viewconst&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 53 21 39.62% ['fuzz_cbor_encoder']
jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::write_byte_string(jsoncons::byte_string_viewconst&) 39 11 28.20% ['fuzz_cbor_encoder']
jsoncons::basic_json >::swap(jsoncons::basic_json >&) 36 18 50.0% ['fuzz_ubjson', 'fuzz_msgpack', 'fuzz_cbor', 'fuzz_bson', 'fuzz_parse']
jsoncons::basic_bigint >::operator>>=(unsignedlong) 31 17 54.83% ['fuzz_cbor_encoder', 'fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_cbor', 'fuzz_msgpack_parser_max']
unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>>(double,jsoncons::string_sink ,std::__1::allocator >>&) 72 19 26.38% ['fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_json_encoder', 'fuzz_cbor', 'fuzz_msgpack_parser_max']
booljsoncons::utility::dtoa_general ,std::__1::allocator >>>(double,char,jsoncons::string_sink ,std::__1::allocator >>&,std::__1::integral_constant ) 33 18 54.54% ['fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_json_encoder', 'fuzz_cbor', 'fuzz_msgpack_parser_max']
jsoncons::msgpack::basic_msgpack_encoder >,void>,std::__1::allocator >::visit_string(std::__1::basic_string_view >const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 68 32 47.05% ['fuzz_msgpack_encoder']
jsoncons::msgpack::basic_msgpack_encoder >,void>,std::__1::allocator >::visit_uint64(unsignedlong,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 76 37 48.68% ['fuzz_msgpack_encoder']
jsoncons::bson::bson_error_category_impl::message(int)const 35 19 54.28% ['fuzz_bson']
unsignedlongjsoncons::utility::write_double::operator() ,std::__1::allocator >>(double,std::__1::basic_string ,std::__1::allocator >&) 72 19 26.38% ['fuzz_csv_encoder', 'fuzz_json_cursor']
booljsoncons::utility::dtoa_general ,std::__1::allocator >>(double,char,std::__1::basic_string ,std::__1::allocator >&,std::__1::integral_constant ) 33 18 54.54% ['fuzz_csv_encoder', 'fuzz_json_cursor']
jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_begin_array(jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 125 23 18.4% ['fuzz_csv_encoder']
jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_end_array(jsoncons::ser_contextconst&,std::__1::error_code&) 125 20 16.0% ['fuzz_csv_encoder']
jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_null(jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 68 18 26.47% ['fuzz_csv_encoder']
jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_bool(bool,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 68 18 26.47% ['fuzz_csv_encoder']
jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_string(std::__1::basic_string_view >const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 68 18 26.47% ['fuzz_csv_encoder']
jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_uint64(unsignedlong,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 68 18 26.47% ['fuzz_csv_encoder']
jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_int64(long,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 68 18 26.47% ['fuzz_csv_encoder']
jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_double(double,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 72 20 27.77% ['fuzz_csv_encoder']
jsoncons::csv::basic_csv_encoder ,std::__1::allocator >>,std::__1::allocator >::write_double_value(double,jsoncons::ser_contextconst&,std::__1::basic_string ,std::__1::allocator >&,std::__1::error_code&) 54 28 51.85% ['fuzz_csv_encoder']
voidjsoncons::csv::detail::parse_column_names ,std::__1::allocator >,std::__1::allocator ,std::__1::allocator >>>>(std::__1::basic_string ,std::__1::allocator >const&,std::__1::vector ,std::__1::allocator >,std::__1::allocator ,std::__1::allocator >>>&) 47 7 14.89% ['fuzz_csv', 'fuzz_csv_encoder']
voidjsoncons::csv::detail::parse_column_types >>(std::__1::basic_string ,std::__1::allocator >const&,std::__1::vector >&) 139 15 10.79% ['fuzz_csv', 'fuzz_csv_encoder']
jsoncons::csv::basic_csv_parser >::end_unquoted_string_value(jsoncons::basic_json_visitor &,std::__1::error_code&) 63 20 31.74% ['fuzz_csv', 'fuzz_csv_encoder']
jsoncons::csv::basic_csv_parser >::end_value(jsoncons::basic_json_visitor &,bool,std::__1::error_code&) 191 17 8.900% ['fuzz_csv', 'fuzz_csv_encoder']
jsoncons::csv::basic_csv_parser >::end_quoted_string_value(jsoncons::basic_json_visitor &,std::__1::error_code&) 59 17 28.81% ['fuzz_csv', 'fuzz_csv_encoder']
jsoncons::csv::basic_csv_parser >::end_record(jsoncons::basic_json_visitor &,std::__1::error_code&) 96 40 41.66% ['fuzz_csv', 'fuzz_csv_encoder']
jsoncons::basic_json >::swap(jsoncons::basic_json >&) 36 11 30.55% ['fuzz_csv']
jsoncons::basic_json_encoder ,std::__1::allocator >>,std::__1::allocator >::basic_json_encoder(jsoncons::string_sink ,std::__1::allocator >>&&,jsoncons::basic_json_encode_options const&,std::__1::allocator const&) 56 30 53.57% ['fuzz_json_encoder']
jsoncons::basic_json_encoder ,std::__1::allocator >>,std::__1::allocator >::write_bigint_value(std::__1::basic_string_view >const&) 63 10 15.87% ['fuzz_json_encoder']
jsoncons::basic_json_encoder ,std::__1::allocator >>,std::__1::allocator >::visit_double(double,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) 74 18 24.32% ['fuzz_json_encoder']
_ZN8jsoncons14unicode_traits12to_codepointIcjEENSt3__19enable_ifIXaasr10ext_traits8is_char8IT_EE5valuesr10ext_traits9is_char32IT0_EE5valueENS0_14convert_resultIS4_EEE4typeEPKS4_SB_RS5_NS0_10conv_flagsE 66 19 28.78% ['fuzz_json_encoder']

Files and Directories in report

This section shows which files and directories are considered in this report. The main reason for showing this is fuzz introspector may include more code in the reasoning than is desired. This section helps identify if too many files/directories are included, e.g. third party code, which may be irrelevant for the threat model. In the event too much is included, fuzz introspector supports a configuration file that can exclude data from the report. See the following link for more information on how to create a config file: link

Files in report

Source file Reached by Covered by
[] []
/src/jsoncons/./include/jsoncons/json_array.hpp [] []
/src/jsoncons/./include/jsoncons/json_reader.hpp ['fuzz_json_parser_max', 'fuzz_json_encoder'] []
/src/jsoncons/./include/jsoncons/json_decoder.hpp ['fuzz_ubjson', 'fuzz_msgpack', 'fuzz_bson', 'fuzz_cbor', 'fuzz_csv', 'fuzz_parse'] []
/src/jsoncons/./fuzzers/fuzz_msgpack_parser_max.cpp ['fuzz_msgpack_parser_max'] []
/src/jsoncons/./fuzzers/fuzz_bson_encoder.cpp ['fuzz_bson_encoder'] []
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_options.hpp ['fuzz_ubjson_encoder', 'fuzz_ubjson_parser_max', 'fuzz_ubjson'] []
/src/jsoncons/./fuzzers/fuzz_json_encoder.cpp ['fuzz_json_encoder'] []
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_reader.hpp ['fuzz_cbor_encoder', 'fuzz_cbor_parser_max', 'fuzz_cbor'] []
/src/jsoncons/./include/jsoncons/value_converter.hpp ['fuzz_json_cursor'] []
/src/jsoncons/./fuzzers/fuzz_cbor.cpp ['fuzz_cbor'] []
/src/jsoncons/./include/jsoncons_ext/bson/bson_decimal128.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_bson'] []
/src/jsoncons/./include/jsoncons_ext/csv/csv_reader.hpp ['fuzz_csv_encoder', 'fuzz_csv'] []
/src/jsoncons/./include/jsoncons/detail/span.hpp ['fuzz_cbor_encoder', 'fuzz_cbor_parser_max', 'fuzz_cbor', 'fuzz_json_parser_max', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_json_encoder'] []
/src/jsoncons/./include/jsoncons/json_options.hpp ['fuzz_json_parser_max', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_parse', 'fuzz_json_encoder'] []
/src/jsoncons/./include/jsoncons_ext/cbor/decode_cbor.hpp ['fuzz_cbor'] []
/src/jsoncons/./include/jsoncons_ext/bson/bson_encoder.hpp ['fuzz_bson_encoder'] []
/src/jsoncons/./include/jsoncons_ext/bson/bson_error.hpp [] []
/usr/local/bin/../include/c++/v1/string [] []
/src/jsoncons/./include/jsoncons/json_visitor.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_ubjson_encoder', 'fuzz_cbor_encoder', 'fuzz_ubjson_parser_max', 'fuzz_ubjson', 'fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max', 'fuzz_bson', 'fuzz_cbor', 'fuzz_json_parser_max', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_parse', 'fuzz_json_encoder'] []
/src/jsoncons/./fuzzers/fuzz_ubjson_encoder.cpp ['fuzz_ubjson_encoder'] []
/src/jsoncons/./include/jsoncons_ext/ubjson/decode_ubjson.hpp ['fuzz_ubjson'] []
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_detail.hpp ['fuzz_cbor_encoder', 'fuzz_cbor_parser_max', 'fuzz_cbor'] []
/src/jsoncons/./fuzzers/fuzz_bson_parser_max.cpp ['fuzz_bson_parser_max'] []
/src/jsoncons/./include/jsoncons/json_object.hpp [] []
/src/jsoncons/./include/jsoncons_ext/jsonpointer/jsonpointer.hpp [] []
/src/jsoncons/./include/jsoncons/detail/grisu3.hpp ['fuzz_json_cursor'] []
/usr/local/bin/../include/c++/v1/stdexcept ['fuzz_csv', 'fuzz_json_cursor'] []
/src/jsoncons/./include/jsoncons/basic_json.hpp ['fuzz_ubjson', 'fuzz_msgpack', 'fuzz_bson', 'fuzz_cbor', 'fuzz_csv', 'fuzz_parse'] []
/src/jsoncons/./fuzzers/fuzz_bson.cpp ['fuzz_bson'] []
/src/jsoncons/./include/jsoncons/json_error.hpp [] []
/src/jsoncons/./include/jsoncons/json_encoder.hpp ['fuzz_json_encoder'] []
/src/jsoncons/./fuzzers/fuzz_msgpack_encoder.cpp ['fuzz_msgpack_encoder'] []
/src/jsoncons/./include/jsoncons_ext/bson/bson_options.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_bson'] []
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_encoder.hpp ['fuzz_msgpack_encoder'] []
/src/jsoncons/./include/jsoncons/json_filter.hpp ['fuzz_ubjson', 'fuzz_msgpack', 'fuzz_bson', 'fuzz_cbor'] []
/src/jsoncons/./include/jsoncons/utility/byte_string.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_cbor_encoder', 'fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max', 'fuzz_bson', 'fuzz_cbor', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor'] []
/src/jsoncons/./include/jsoncons_ext/csv/csv_encoder.hpp ['fuzz_csv_encoder'] []
/src/jsoncons/./fuzzers/fuzz_csv_encoder.cpp ['fuzz_csv_encoder'] []
/src/jsoncons/./include/jsoncons_ext/csv/csv_error.hpp [] []
/src/jsoncons/./fuzzers/fuzz_cbor_encoder.cpp ['fuzz_cbor_encoder'] []
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_encoder.hpp ['fuzz_ubjson_encoder'] []
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp ['fuzz_json_cursor'] []
/src/jsoncons/./fuzzers/fuzz_cbor_parser_max.cpp ['fuzz_cbor_parser_max'] []
/src/jsoncons/./include/jsoncons/ser_context.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_ubjson_encoder', 'fuzz_cbor_encoder', 'fuzz_ubjson_parser_max', 'fuzz_ubjson', 'fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max', 'fuzz_bson', 'fuzz_cbor', 'fuzz_json_parser_max', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_parse', 'fuzz_json_encoder'] []
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_error.hpp [] []
/src/jsoncons/./include/jsoncons/utility/more_type_traits.hpp ['fuzz_cbor_encoder', 'fuzz_ubjson', 'fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max', 'fuzz_bson', 'fuzz_cbor', 'fuzz_json_parser_max', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_parse', 'fuzz_json_encoder'] []
/src/jsoncons/./include/jsoncons/utility/unicode_traits.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_ubjson_encoder', 'fuzz_cbor_encoder', 'fuzz_ubjson_parser_max', 'fuzz_ubjson', 'fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max', 'fuzz_bson', 'fuzz_cbor', 'fuzz_json_parser_max', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_parse', 'fuzz_json_encoder'] []
/src/jsoncons/./fuzzers/fuzz_parse.cpp ['fuzz_parse'] []
/usr/local/bin/../include/c++/v1/stdlib.h [] []
/src/jsoncons/./fuzzers/fuzz_msgpack.cpp ['fuzz_msgpack'] []
/src/jsoncons/./fuzzers/fuzz_ubjson_parser_max.cpp ['fuzz_ubjson_parser_max'] []
/src/jsoncons/./include/jsoncons/json_exception.hpp ['fuzz_ubjson', 'fuzz_msgpack', 'fuzz_bson', 'fuzz_cbor', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_parse'] []
/src/jsoncons/./include/jsoncons/result.hpp ['fuzz_ubjson', 'fuzz_msgpack', 'fuzz_bson', 'fuzz_cbor'] []
/src/jsoncons/./include/jsoncons/sink.hpp ['fuzz_bson_encoder', 'fuzz_ubjson_encoder', 'fuzz_cbor_encoder', 'fuzz_msgpack_encoder', 'fuzz_csv_encoder', 'fuzz_json_encoder'] []
/src/jsoncons/./include/jsoncons/utility/write_number.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_cbor_encoder', 'fuzz_cbor_parser_max', 'fuzz_bson', 'fuzz_cbor', 'fuzz_csv_encoder', 'fuzz_json_cursor', 'fuzz_json_encoder'] []
/src/jsoncons/./include/jsoncons_ext/csv/csv_parser.hpp ['fuzz_csv_encoder', 'fuzz_csv'] []
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_parser.hpp ['fuzz_cbor_encoder', 'fuzz_cbor_parser_max', 'fuzz_cbor'] []
/src/jsoncons/./include/jsoncons/utility/bigint.hpp ['fuzz_cbor_encoder', 'fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max', 'fuzz_cbor'] []
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_reader.hpp ['fuzz_ubjson_encoder', 'fuzz_ubjson_parser_max', 'fuzz_ubjson'] []
/src/jsoncons/./include/jsoncons/typed_array_view.hpp ['fuzz_json_cursor'] []
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_ubjson_encoder', 'fuzz_cbor_encoder', 'fuzz_ubjson_parser_max', 'fuzz_ubjson', 'fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max', 'fuzz_bson', 'fuzz_cbor', 'fuzz_json_parser_max', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_parse', 'fuzz_json_encoder'] []
/src/jsoncons/./include/jsoncons_ext/bson/decode_bson.hpp ['fuzz_bson'] []
/usr/local/bin/../include/c++/v1/__exception/exception.h ['fuzz_ubjson', 'fuzz_msgpack', 'fuzz_bson', 'fuzz_cbor', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_parse'] []
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp ['fuzz_cbor_encoder', 'fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max', 'fuzz_cbor'] []
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp ['fuzz_cbor_encoder'] []
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_options.hpp ['fuzz_cbor_encoder', 'fuzz_cbor_parser_max', 'fuzz_cbor'] []
/src/jsoncons/./include/jsoncons/utility/heap_string.hpp ['fuzz_ubjson', 'fuzz_msgpack', 'fuzz_bson', 'fuzz_cbor', 'fuzz_csv', 'fuzz_parse'] []
/src/jsoncons/./include/jsoncons_ext/bson/bson_parser.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_bson'] []
/src/jsoncons/./include/jsoncons/read_result.hpp ['fuzz_ubjson', 'fuzz_msgpack', 'fuzz_bson', 'fuzz_cbor'] []
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_error.hpp [] []
/src/jsoncons/./include/jsoncons_ext/msgpack/decode_msgpack.hpp ['fuzz_msgpack'] []
/src/jsoncons/./include/jsoncons/json_type.hpp ['fuzz_ubjson', 'fuzz_msgpack', 'fuzz_bson', 'fuzz_cbor', 'fuzz_parse'] []
/src/jsoncons/./include/jsoncons/source_adaptor.hpp ['fuzz_json_parser_max', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_json_encoder'] []
/src/jsoncons/./include/jsoncons/utility/binary.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_ubjson_encoder', 'fuzz_cbor_encoder', 'fuzz_ubjson_parser_max', 'fuzz_ubjson', 'fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max', 'fuzz_bson', 'fuzz_cbor'] []
/src/jsoncons/./fuzzers/fuzz_ubjson.cpp ['fuzz_ubjson'] []
/src/jsoncons/./include/jsoncons_ext/csv/csv_options.hpp ['fuzz_csv_encoder', 'fuzz_csv'] []
/src/jsoncons/./include/jsoncons/staj_cursor.hpp ['fuzz_json_cursor'] []
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_parser.hpp ['fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max'] []
/src/jsoncons/./include/jsoncons_ext/bson/bson_oid.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_bson'] []
/src/jsoncons/./include/jsoncons/source.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_ubjson_encoder', 'fuzz_cbor_encoder', 'fuzz_ubjson_parser_max', 'fuzz_ubjson', 'fuzz_cbor_parser_max', 'fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max', 'fuzz_bson', 'fuzz_cbor', 'fuzz_json_parser_max', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_json_encoder'] []
/src/jsoncons/./fuzzers/fuzz_json_parser_max.cpp ['fuzz_json_parser_max'] []
/src/jsoncons/./fuzzers/fuzz_csv.cpp ['fuzz_csv'] []
/src/jsoncons/./include/jsoncons/staj_event.hpp ['fuzz_json_cursor'] []
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_options.hpp ['fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max'] []
/src/jsoncons/./fuzzers/fuzz_json_cursor.cpp ['fuzz_json_cursor'] []
/src/jsoncons/./include/jsoncons_ext/bson/bson_reader.hpp ['fuzz_bson_parser_max', 'fuzz_bson_encoder', 'fuzz_bson'] []
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_error.hpp [] []
/src/jsoncons/./include/jsoncons/allocator_holder.hpp ['fuzz_ubjson', 'fuzz_msgpack', 'fuzz_bson', 'fuzz_cbor', 'fuzz_csv', 'fuzz_parse'] []
/src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_reader.hpp ['fuzz_msgpack_encoder', 'fuzz_msgpack', 'fuzz_msgpack_parser_max'] []
/src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_parser.hpp ['fuzz_ubjson_encoder', 'fuzz_ubjson_parser_max', 'fuzz_ubjson'] []
/src/jsoncons/./include/jsoncons/json_cursor.hpp ['fuzz_json_cursor'] []
/src/jsoncons/./include/jsoncons/json_parser.hpp ['fuzz_json_parser_max', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_parse', 'fuzz_json_encoder'] []
/src/jsoncons/./include/jsoncons/conv_error.hpp [] []
/src/jsoncons/./include/jsoncons/utility/read_number.hpp ['fuzz_ubjson_encoder', 'fuzz_ubjson_parser_max', 'fuzz_ubjson', 'fuzz_json_parser_max', 'fuzz_csv_encoder', 'fuzz_csv', 'fuzz_json_cursor', 'fuzz_parse', 'fuzz_json_encoder'] []

Directories in report

Directory
/src/jsoncons/./include/jsoncons_ext/jsonpointer/
/usr/local/bin/../include/c++/v1/__exception/
/usr/local/bin/../include/c++/v1/
/src/jsoncons/./fuzzers/
/src/jsoncons/./include/jsoncons_ext/bson/
/src/jsoncons/./include/jsoncons/detail/
/src/jsoncons/./include/jsoncons/utility/
/src/jsoncons/./include/jsoncons_ext/csv/
/src/jsoncons/./include/jsoncons_ext/msgpack/
/src/jsoncons/./include/jsoncons_ext/ubjson/
/src/jsoncons/./include/jsoncons/
/src/jsoncons/./include/jsoncons/config/
/src/jsoncons/./include/jsoncons_ext/cbor/

Metadata section

This sections shows the raw data that is used to produce this report. This is mainly used for further processing and developer debugging.

Fuzzer Calltree file Program data file Coverage file
fuzz_bson_parser_max fuzzerLogFile-0-Fkd3Tb4p3v.data fuzzerLogFile-0-Fkd3Tb4p3v.data.yaml fuzz_bson_parser_max.covreport
fuzz_bson_encoder fuzzerLogFile-0-QKOtqoB8KB.data fuzzerLogFile-0-QKOtqoB8KB.data.yaml fuzz_bson_encoder.covreport
fuzz_ubjson_encoder fuzzerLogFile-0-CVO8SD40zW.data fuzzerLogFile-0-CVO8SD40zW.data.yaml fuzz_ubjson_encoder.covreport
fuzz_cbor_encoder fuzzerLogFile-0-p2nQJyxYkD.data fuzzerLogFile-0-p2nQJyxYkD.data.yaml fuzz_cbor_encoder.covreport
fuzz_ubjson_parser_max fuzzerLogFile-0-UwtaZnTNlb.data fuzzerLogFile-0-UwtaZnTNlb.data.yaml fuzz_ubjson_parser_max.covreport
fuzz_ubjson fuzzerLogFile-0-FK7Pia9K0I.data fuzzerLogFile-0-FK7Pia9K0I.data.yaml fuzz_ubjson.covreport
fuzz_cbor_parser_max fuzzerLogFile-0-CZl0VXBtwB.data fuzzerLogFile-0-CZl0VXBtwB.data.yaml fuzz_cbor_parser_max.covreport
fuzz_msgpack_encoder fuzzerLogFile-0-o0TySQKXIS.data fuzzerLogFile-0-o0TySQKXIS.data.yaml fuzz_msgpack_encoder.covreport
fuzz_msgpack fuzzerLogFile-0-wvFkrmLOd5.data fuzzerLogFile-0-wvFkrmLOd5.data.yaml fuzz_msgpack.covreport
fuzz_msgpack_parser_max fuzzerLogFile-0-57dQynoGLE.data fuzzerLogFile-0-57dQynoGLE.data.yaml fuzz_msgpack_parser_max.covreport
fuzz_bson fuzzerLogFile-0-WCTUd5sGIH.data fuzzerLogFile-0-WCTUd5sGIH.data.yaml fuzz_bson.covreport
fuzz_cbor fuzzerLogFile-0-1UsUz5WvgL.data fuzzerLogFile-0-1UsUz5WvgL.data.yaml fuzz_cbor.covreport
fuzz_json_parser_max fuzzerLogFile-0-AUUtbbWWnc.data fuzzerLogFile-0-AUUtbbWWnc.data.yaml fuzz_json_parser_max.covreport
fuzz_csv_encoder fuzzerLogFile-0-j7h4FXbn4S.data fuzzerLogFile-0-j7h4FXbn4S.data.yaml fuzz_csv_encoder.covreport
fuzz_csv fuzzerLogFile-0-KaKFhafxaC.data fuzzerLogFile-0-KaKFhafxaC.data.yaml fuzz_csv.covreport
fuzz_json_cursor fuzzerLogFile-0-EXoM842AzJ.data fuzzerLogFile-0-EXoM842AzJ.data.yaml fuzz_json_cursor.covreport
fuzz_parse fuzzerLogFile-0-ggTYYAdFmF.data fuzzerLogFile-0-ggTYYAdFmF.data.yaml fuzz_parse.covreport
fuzz_json_encoder fuzzerLogFile-0-nQK5cLsEZy.data fuzzerLogFile-0-nQK5cLsEZy.data.yaml fuzz_json_encoder.covreport