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 154 103 6 15 680 367 fuzz_bson_parser_max.cpp
fuzz_ubjson_parser_max /src/jsoncons/./fuzzers/fuzz_ubjson_parser_max.cpp 157 102 7 13 669 404 fuzz_ubjson_parser_max.cpp
fuzz_ubjson_encoder /src/jsoncons/./fuzzers/fuzz_ubjson_encoder.cpp 160 132 7 15 677 409 fuzz_ubjson_encoder.cpp
fuzz_bson_encoder /src/jsoncons/./fuzzers/fuzz_bson_encoder.cpp 157 151 6 17 688 372 fuzz_bson_encoder.cpp
fuzz_msgpack_parser_max /src/jsoncons/./fuzzers/fuzz_msgpack_parser_max.cpp 215 269 8 15 796 454 fuzz_msgpack_parser_max.cpp
fuzz_msgpack_encoder /src/jsoncons/./fuzzers/fuzz_msgpack_encoder.cpp 224 320 8 17 810 465 fuzz_msgpack_encoder.cpp
fuzz_bson /src/jsoncons/./fuzzers/fuzz_bson.cpp 291 850 8 20 903 565 fuzz_bson.cpp
fuzz_ubjson /src/jsoncons/./fuzzers/fuzz_ubjson.cpp 294 849 9 18 892 602 fuzz_ubjson.cpp
fuzz_cbor_parser_max /src/jsoncons/./fuzzers/fuzz_cbor_parser_max.cpp 333 275 8 19 1857 880 fuzz_cbor_parser_max.cpp
fuzz_msgpack /src/jsoncons/./fuzzers/fuzz_msgpack.cpp 358 1009 10 20 1026 658 fuzz_msgpack.cpp
fuzz_cbor_encoder /src/jsoncons/./fuzzers/fuzz_cbor_encoder.cpp 354 377 8 21 1925 922 fuzz_cbor_encoder.cpp
fuzz_cbor /src/jsoncons/./fuzzers/fuzz_cbor.cpp 484 1018 10 24 2094 1095 fuzz_cbor.cpp
fuzz_json_parser_max /src/jsoncons/./fuzzers/fuzz_json_parser_max.cpp 244 115 9 15 2009 669 fuzz_json_parser_max.cpp
fuzz_json_cursor /src/jsoncons/./fuzzers/fuzz_json_cursor.cpp 355 196 10 22 2615 1007 fuzz_json_cursor.cpp
fuzz_json_encoder /src/jsoncons/./fuzzers/fuzz_json_encoder.cpp 270 289 9 18 2099 737 fuzz_json_encoder.cpp
fuzz_parse /src/jsoncons/./fuzzers/fuzz_parse.cpp 319 800 9 13 2015 739 fuzz_parse.cpp
fuzz_csv_encoder /src/jsoncons/./fuzzers/fuzz_csv_encoder.cpp 403 251 13 21 3351 1388 fuzz_csv_encoder.cpp
fuzz_csv /src/jsoncons/./fuzzers/fuzz_csv.cpp 441 902 14 20 3341 1404 fuzz_csv.cpp

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 19 13.7%
gold [1:9] 3 2.17%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 116 84.0%
All colors 138 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 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:220
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:220
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:220
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:220
0 0 None 0 0 jsoncons::stream_source ::read(unsignedchar*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/source.hpp:250
0 0 None 0 0 jsoncons::bson::basic_bson_parser ,std::__1::allocator >::begin_array(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/bson/bson_parser.hpp:271

Runtime coverage analysis

Covered functions
83
Functions that are reachable but not covered
32
Reachable functions
154
Percentage of reachable functions covered
79.22%
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 12
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 12
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 4
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1
/src/jsoncons/./include/jsoncons/byte_string.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_decimal128.hpp 3
/src/jsoncons/./include/jsoncons/detail/write_number.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_oid.hpp 5

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 21 13.1%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 139 86.8%
All colors 160 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
10 10 7 :

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

10 10 jsoncons::stream_source ::read(unsignedchar*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/source.hpp:234
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
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:169
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:176
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:259
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:266
0 0 None 0 0 jsoncons::ubjson::basic_ubjson_parser ,std::__1::allocator >::read_type_and_value(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_parser.hpp:316

Runtime coverage analysis

Covered functions
87
Functions that are reachable but not covered
32
Reachable functions
157
Percentage of reachable functions covered
79.62%
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 12
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 13
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 6
/src/jsoncons/./include/jsoncons/config/binary_config.hpp 1
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/detail/parse_number.hpp 1
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1

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 15.0%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 141 84.9%
All colors 166 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
21 21 7 :

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

21 23 jsoncons::ubjson::basic_ubjson_encoder >,void>,std::__1::allocator >::put_length(unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_encoder.hpp:313
10 10 7 :

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

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

['std::__1::numeric_limits ::max()', 'std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(int, std::__1::back_insert_iterator >, void> >)', '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()', 'std::__1::numeric_limits ::max()', 'std::__1::enable_if ::type jsoncons::binary::native_to_big >, void> >, jsoncons::detail::endian>(short, 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:447
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 1 :

['_ZNSt3__110error_codeaSIN8jsoncons6ubjson11ubjson_errcEEENS_9enable_ifIXsr18is_error_code_enumIT_EE5valueERS0_E4typeES6_']

0 0 jsoncons::ubjson::basic_ubjson_encoder >,void>,std::__1::allocator >::visit_key(jsoncons::detail::basic_string_view >const&,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/ubjson/ubjson_encoder.hpp:243
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:169
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:176

Runtime coverage analysis

Covered functions
113
Functions that are reachable but not covered
28
Reachable functions
160
Percentage of reachable functions covered
82.5%
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 10
/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 12
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 13
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 6
/src/jsoncons/./include/jsoncons/config/binary_config.hpp 1
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/detail/parse_number.hpp 1
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1

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 23 15.9%
gold [1:9] 3 2.08%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 118 81.9%
All colors 144 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
10 10 4 :

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

10 10 jsoncons::detail::basic_string_view >::substr(unsignedlong,unsignedlong)const call site: 00000 /src/jsoncons/./include/jsoncons/detail/string_view.hpp:165
0 0 None 4 52 jsoncons::detail::basic_string_view >::find_last_of(jsoncons::detail::basic_string_view >,unsignedlong)const call site: 00000 /src/jsoncons/./include/jsoncons/detail/string_view.hpp:291
0 0 None 0 32 _ZN8jsoncons6detail10to_integerIjcEENSt3__19enable_ifIXaasr16extension_traits14integer_limitsIT_EE14is_specializedntsr16extension_traits14integer_limitsIS4_EE9is_signedENS0_17to_integer_resultIS4_T0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:430
0 0 None 0 32 _ZN8jsoncons6detail10to_integerIjcEENSt3__19enable_ifIXaasr16extension_traits14integer_limitsIT_EE14is_specializedntsr16extension_traits14integer_limitsIS4_EE9is_signedENS0_17to_integer_resultIS4_T0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:505
0 0 None 0 32 _ZN8jsoncons6detail10to_integerIjcEENSt3__19enable_ifIXaasr16extension_traits14integer_limitsIT_EE14is_specializedntsr16extension_traits14integer_limitsIS4_EE9is_signedENS0_17to_integer_resultIS4_T0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:505
0 0 None 0 32 _ZN8jsoncons6detail10to_integerIjcEENSt3__19enable_ifIXaasr16extension_traits14integer_limitsIT_EE14is_specializedntsr16extension_traits14integer_limitsIS4_EE9is_signedENS0_17to_integer_resultIS4_T0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:505
0 0 None 0 32 _ZN8jsoncons6detail10to_integerIjcEENSt3__19enable_ifIXaasr16extension_traits14integer_limitsIT_EE14is_specializedntsr16extension_traits14integer_limitsIS4_EE9is_signedENS0_17to_integer_resultIS4_T0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:505
0 0 None 0 32 _ZN8jsoncons6detail10to_integerIjcEENSt3__19enable_ifIXaasr16extension_traits14integer_limitsIT_EE14is_specializedntsr16extension_traits14integer_limitsIS4_EE9is_signedENS0_17to_integer_resultIS4_T0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:505
0 0 None 0 32 _ZN8jsoncons6detail10to_integerIjcEENSt3__19enable_ifIXaasr16extension_traits14integer_limitsIT_EE14is_specializedntsr16extension_traits14integer_limitsIS4_EE9is_signedENS0_17to_integer_resultIS4_T0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:505
0 0 None 0 32 _ZN8jsoncons6detail10to_integerIjcEENSt3__19enable_ifIXaasr16extension_traits14integer_limitsIT_EE14is_specializedntsr16extension_traits14integer_limitsIS4_EE9is_signedENS0_17to_integer_resultIS4_T0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:505
0 0 None 0 32 _ZN8jsoncons6detail10to_integerIjcEENSt3__19enable_ifIXaasr16extension_traits14integer_limitsIT_EE14is_specializedntsr16extension_traits14integer_limitsIS4_EE9is_signedENS0_17to_integer_resultIS4_T0_EEE4typeEPKS6_mRS4_ call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:505
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:753

Runtime coverage analysis

Covered functions
134
Functions that are reachable but not covered
28
Reachable functions
157
Percentage of reachable functions covered
82.17%
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 9
/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 12
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 12
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 4
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1
/src/jsoncons/./include/jsoncons/byte_string.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_decimal128.hpp 3
/src/jsoncons/./include/jsoncons/detail/write_number.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_oid.hpp 5

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 28 13.7%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 175 86.2%
All colors 203 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
68 166 10 :

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

68 239 jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:600
38 38 1 :

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

38 38 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1557
28 52 3 :

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

66 104 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1553
26 26 1 :

['_ZN8jsoncons6detail12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::detail::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:152
21 21 6 :

['std::__1::basic_string , std::__1::allocator >::basic_string (char const*)', 'jsoncons::json_runtime_error ::json_runtime_error(std::__1::basic_string , std::__1::allocator > const&)', '__cxa_allocate_exception', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '__cxa_free_exception', '__cxa_throw']

21 21 _ZNK8jsoncons6detail8chars_toclIcEENSt3__19enable_ifIXsr3std7is_sameIT_cEE5valueEdE4typeEPKS5_m call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:1109
8 8 4 :

['std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__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/bigint.hpp:1352
0 81 3 :

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

0 81 jsoncons::basic_bigint >::operator+=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:572
0 44 1 :

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

0 44 jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,int&)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1542
0 42 2 :

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

0 201 jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >,jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,bool)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1406
0 7 1 :

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

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

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

0 6 booljsoncons::detail::dtoa_general ,std::__1::allocator >>>(double,char,jsoncons::string_sink ,std::__1::allocator >>&,std::__1::integral_constant ) call site: 00000 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:321
0 0 None 17 17 _ZN8jsoncons6detail12from_integerImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_ call site: 00000 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:46

Runtime coverage analysis

Covered functions
209
Functions that are reachable but not covered
34
Reachable functions
215
Percentage of reachable functions covered
84.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_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 12
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 17
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 10
/src/jsoncons/./include/jsoncons/config/binary_config.hpp 1
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/byte_string.hpp 2
/src/jsoncons/./include/jsoncons/bigint.hpp 23
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1

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 34 16.1%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 177 83.8%
All colors 211 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
68 166 10 :

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

68 239 jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:600
38 38 1 :

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

38 38 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1557
28 52 3 :

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

66 104 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1553
26 26 1 :

['_ZN8jsoncons6detail12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::detail::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:152
21 21 6 :

['std::__1::basic_string , std::__1::allocator >::basic_string (char const*)', 'jsoncons::json_runtime_error ::json_runtime_error(std::__1::basic_string , std::__1::allocator > const&)', '__cxa_allocate_exception', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '__cxa_free_exception', '__cxa_throw']

21 21 _ZNK8jsoncons6detail8chars_toclIcEENSt3__19enable_ifIXsr3std7is_sameIT_cEE5valueEdE4typeEPKS5_m call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:1109
16 16 5 :

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

16 16 jsoncons::msgpack::basic_msgpack_encoder >,void>,std::__1::allocator >::write_string_value(jsoncons::detail::basic_string_view >const&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/msgpack/msgpack_encoder.hpp:356
8 8 4 :

['std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__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/bigint.hpp:1352
0 81 3 :

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

0 81 jsoncons::basic_bigint >::operator+=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:572
0 44 1 :

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

0 44 jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,int&)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1542
0 42 2 :

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

0 201 jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >,jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,bool)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1406
0 7 1 :

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

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

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

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

Runtime coverage analysis

Covered functions
238
Functions that are reachable but not covered
32
Reachable functions
224
Percentage of reachable functions covered
85.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_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 9
/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 12
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 17
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 10
/src/jsoncons/./include/jsoncons/config/binary_config.hpp 1
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/byte_string.hpp 2
/src/jsoncons/./include/jsoncons/bigint.hpp 23
/src/jsoncons/./include/jsoncons/config/compiler_support.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 38 19.0%
gold [1:9] 0 0.0%
yellow [10:29] 3 1.50%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 158 79.3%
All colors 199 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 1279 3 :

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

0 1279 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:219
0 0 None 114 254 _ZN8jsoncons4bson11decode_bsonINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEENS4_9enable_ifIXsr16extension_traits13is_basic_jsonIT_EE5valueES9_E4typeERNS4_13basic_istreamIcNS4_11char_traitsIcEEEERKNS0_19bson_decode_optionsE call site: 00155 /src/jsoncons/./include/jsoncons_ext/bson/decode_bson.hpp:68
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:202
0 0 None 0 0 jsoncons::basic_json >::swap(jsoncons::basic_json >&) call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:3158
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:220
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:220
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:220
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::little_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:220
0 0 None 0 0 jsoncons::stream_source ::read(unsignedchar*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/source.hpp:250
0 0 None 0 0 jsoncons::bson::basic_bson_parser ,std::__1::allocator >::begin_array(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/bson/bson_parser.hpp:271

Runtime coverage analysis

Covered functions
360
Functions that are reachable but not covered
61
Reachable functions
291
Percentage of reachable functions covered
79.04%
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/bson_options.hpp 6
/src/jsoncons/./include/jsoncons_ext/bson/decode_bson.hpp 1
/src/jsoncons/./include/jsoncons/json_decoder.hpp 4
/src/jsoncons/./include/jsoncons/json_visitor.hpp 15
/src/jsoncons/./include/jsoncons/basic_json.hpp 32
/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 13
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 12
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 4
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1
/src/jsoncons/./include/jsoncons/byte_string.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_decimal128.hpp 3
/src/jsoncons/./include/jsoncons/detail/write_number.hpp 1
/src/jsoncons/./include/jsoncons_ext/bson/bson_oid.hpp 5
/src/jsoncons/./include/jsoncons/json_exception.hpp 3

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 43 19.3%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 2 0.90%
lawngreen 50+ 177 79.7%
All colors 222 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
10 10 7 :

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

10 10 jsoncons::stream_source ::read(unsignedchar*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/source.hpp:234
0 0 None 114 254 _ZN8jsoncons6ubjson13decode_ubjsonINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEENS4_9enable_ifIXsr16extension_traits13is_basic_jsonIT_EE5valueES9_E4typeERNS4_13basic_istreamIcNS4_11char_traitsIcEEEERKNS0_21ubjson_decode_optionsE call site: 00177 /src/jsoncons/./include/jsoncons_ext/ubjson/decode_ubjson.hpp:68
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:202
0 0 None 0 0 jsoncons::basic_json >::swap(jsoncons::basic_json >&) call site: 00000 /src/jsoncons/./include/jsoncons/basic_json.hpp:3158
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 std::__1::enable_if ::typejsoncons::binary::big_to_native (unsignedcharconst*,unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp:205
0 0 None 0 0 _ZN8jsoncons14unicode_traits8validateIcEENSt3__19enable_ifIXsr16extension_traits8is_char8IT_EE5valueENS0_14convert_resultIS4_EEE4typeEPKS4_m call site: 00079 /src/jsoncons/./include/jsoncons/unicode_traits.hpp:1136
0 0 None 0 0 _ZN8jsoncons14unicode_traits13is_legal_utf8IcEENSt3__19enable_ifIXsr16extension_traits8is_char8IT_EE5valueENS0_9conv_errcEE4typeEPKS4_m call site: 00080 /src/jsoncons/./include/jsoncons/unicode_traits.hpp:333

Runtime coverage analysis

Covered functions
328
Functions that are reachable but not covered
69
Reachable functions
294
Percentage of reachable functions covered
76.53%
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/ubjson_options.hpp 7
/src/jsoncons/./include/jsoncons_ext/ubjson/decode_ubjson.hpp 1
/src/jsoncons/./include/jsoncons/json_decoder.hpp 4
/src/jsoncons/./include/jsoncons/json_visitor.hpp 16
/src/jsoncons/./include/jsoncons/basic_json.hpp 32
/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 13
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 13
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 6
/src/jsoncons/./include/jsoncons/config/binary_config.hpp 1
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/detail/parse_number.hpp 1
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1
/src/jsoncons/./include/jsoncons/json_exception.hpp 3

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 32 7.94%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 371 92.0%
All colors 403 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
28 52 3 :

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

28 104 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1553
26 26 1 :

['_ZN8jsoncons6detail12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::detail::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:152
22 166 10 :

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

22 239 jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:600
21 21 6 :

['std::__1::basic_string , std::__1::allocator >::basic_string (char const*)', 'jsoncons::json_runtime_error ::json_runtime_error(std::__1::basic_string , std::__1::allocator > const&)', '__cxa_allocate_exception', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '__cxa_free_exception', '__cxa_throw']

21 21 _ZNK8jsoncons6detail8chars_toclIcEENSt3__19enable_ifIXsr3std7is_sameIT_cEE5valueEdE4typeEPKS5_m call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:1109
8 8 4 :

['std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__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/bigint.hpp:1352
0 81 3 :

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

0 81 jsoncons::basic_bigint >::operator+=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:572
0 44 1 :

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

0 44 jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,int&)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1542
0 19 1 :

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

0 78 jsoncons::basic_bigint >::operator>>=(unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:768
0 7 1 :

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

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

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

0 6 booljsoncons::detail::dtoa_general ,std::__1::allocator >>>(double,char,jsoncons::string_sink ,std::__1::allocator >>&,std::__1::integral_constant ) call site: 00000 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:321
0 0 None 17 19 _ZN8jsoncons6detail21integer_to_string_hexImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_ call site: 00311 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:93
0 0 None 17 17 _ZN8jsoncons6detail12from_integerImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_ call site: 00266 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:46

Runtime coverage analysis

Covered functions
359
Functions that are reachable but not covered
40
Reachable functions
333
Percentage of reachable functions covered
87.99%
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_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 36
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 13
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 33
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 5
/src/jsoncons/./include/jsoncons/config/binary_config.hpp 8
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/byte_string.hpp 4
/src/jsoncons/./include/jsoncons/bigint.hpp 21
/usr/local/bin/../include/c++/v1/math.h 1
/src/jsoncons/./include/jsoncons/detail/span.hpp 11
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_detail.hpp 1
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/write_number.hpp 7

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 50 18.7%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 217 81.2%
All colors 267 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
68 166 10 :

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

68 239 jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:600
38 38 1 :

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

38 38 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1557
28 52 3 :

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

66 104 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1553
26 26 1 :

['_ZN8jsoncons6detail12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::detail::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:152
21 21 6 :

['std::__1::basic_string , std::__1::allocator >::basic_string (char const*)', 'jsoncons::json_runtime_error ::json_runtime_error(std::__1::basic_string , std::__1::allocator > const&)', '__cxa_allocate_exception', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '__cxa_free_exception', '__cxa_throw']

21 21 _ZNK8jsoncons6detail8chars_toclIcEENSt3__19enable_ifIXsr3std7is_sameIT_cEE5valueEdE4typeEPKS5_m call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:1109
8 8 4 :

['std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__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/bigint.hpp:1352
0 81 3 :

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

0 81 jsoncons::basic_bigint >::operator+=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:572
0 44 1 :

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

0 44 jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,int&)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1542
0 42 2 :

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

0 201 jsoncons::basic_bigint >::divide(jsoncons::basic_bigint >,jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,bool)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1406
0 7 1 :

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

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

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

0 6 booljsoncons::detail::dtoa_general ,std::__1::allocator >>>(double,char,jsoncons::string_sink ,std::__1::allocator >>&,std::__1::integral_constant ) call site: 00000 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:321
0 0 None 118 258 _ZN8jsoncons7msgpack14decode_msgpackINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEENS4_9enable_ifIXsr16extension_traits13is_basic_jsonIT_EE5valueES9_E4typeERNS4_13basic_istreamIcNS4_11char_traitsIcEEEERKNS0_22msgpack_decode_optionsE call site: 00222 /src/jsoncons/./include/jsoncons_ext/msgpack/decode_msgpack.hpp:69

Runtime coverage analysis

Covered functions
493
Functions that are reachable but not covered
65
Reachable functions
358
Percentage of reachable functions covered
81.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.
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/msgpack_options.hpp 6
/src/jsoncons/./include/jsoncons_ext/msgpack/decode_msgpack.hpp 1
/src/jsoncons/./include/jsoncons/json_decoder.hpp 4
/src/jsoncons/./include/jsoncons/json_visitor.hpp 4
/src/jsoncons/./include/jsoncons/basic_json.hpp 32
/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 11
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 12
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 17
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 10
/src/jsoncons/./include/jsoncons/config/binary_config.hpp 1
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/byte_string.hpp 2
/src/jsoncons/./include/jsoncons/bigint.hpp 23
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1
/src/jsoncons/./include/jsoncons/json_exception.hpp 3

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 38 8.94%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 387 91.0%
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
28 52 3 :

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

28 104 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1553
27 62 7 :

['jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_byte_string_value(jsoncons::byte_string_view const&)', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_typed_array_tag(std::__1::integral_constant , unsigned short, jsoncons::semantic_tag)', 'std::__1::vector >::vector(unsigned long)', 'jsoncons::detail::span ::data() const', 'std::__1::vector >::~vector()', 'std::__1::vector >::data()', '_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS7_EE5valueEiE4typeE']

27 66 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_typed_array(jsoncons::detail::span const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1280
27 62 7 :

['jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_byte_string_value(jsoncons::byte_string_view const&)', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_typed_array_tag(std::__1::integral_constant , unsigned int, jsoncons::semantic_tag)', 'std::__1::vector >::vector(unsigned long)', 'std::__1::vector >::~vector()', 'std::__1::vector >::data()', 'jsoncons::detail::span ::data() const', '_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS7_EE5valueEiE4typeE']

27 66 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_typed_array(jsoncons::detail::span const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1310
27 62 7 :

['jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_byte_string_value(jsoncons::byte_string_view const&)', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_typed_array_tag(std::__1::integral_constant , unsigned long, jsoncons::semantic_tag)', 'std::__1::vector >::vector(unsigned long)', 'std::__1::vector >::~vector()', 'std::__1::vector >::data()', 'jsoncons::detail::span ::data() const', '_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS7_EE5valueEiE4typeE']

27 66 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_typed_array(jsoncons::detail::span const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1340
27 62 7 :

['jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_byte_string_value(jsoncons::byte_string_view const&)', 'std::__1::vector >::vector(unsigned long)', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_typed_array_tag(std::__1::integral_constant , short, jsoncons::semantic_tag)', 'std::__1::vector >::~vector()', 'std::__1::vector >::data()', 'jsoncons::detail::span ::data() const', '_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS7_EE5valueEiE4typeE']

27 66 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_typed_array(jsoncons::detail::span const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1398
27 62 7 :

['jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_byte_string_value(jsoncons::byte_string_view const&)', 'std::__1::vector >::vector(unsigned long)', 'std::__1::vector >::~vector()', 'std::__1::vector >::data()', 'jsoncons::detail::span ::data() const', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_typed_array_tag(std::__1::integral_constant , int, jsoncons::semantic_tag)', '_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS7_EE5valueEiE4typeE']

27 66 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_typed_array(jsoncons::detail::span const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1428
27 62 7 :

['jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_byte_string_value(jsoncons::byte_string_view const&)', 'jsoncons::detail::span ::data() const', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_typed_array_tag(std::__1::integral_constant , long, jsoncons::semantic_tag)', 'std::__1::vector >::vector(unsigned long)', 'std::__1::vector >::~vector()', 'std::__1::vector >::data()', '_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS7_EE5valueEiE4typeE']

27 66 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_typed_array(jsoncons::detail::span const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1458
27 62 7 :

['jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_byte_string_value(jsoncons::byte_string_view const&)', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_typed_array_tag(std::__1::integral_constant , jsoncons::half_arg_t, jsoncons::semantic_tag)', 'std::__1::vector >::vector(unsigned long)', 'jsoncons::detail::span ::data() const', 'std::__1::vector >::~vector()', 'std::__1::vector >::data()', '_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS7_EE5valueEiE4typeE']

27 66 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_typed_array(jsoncons::half_arg_t,jsoncons::detail::span const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1488
27 62 7 :

['jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_byte_string_value(jsoncons::byte_string_view const&)', 'jsoncons::detail::span ::data() const', 'std::__1::vector >::vector(unsigned long)', 'std::__1::vector >::~vector()', 'std::__1::vector >::data()', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_typed_array_tag(std::__1::integral_constant , float, jsoncons::semantic_tag)', '_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS7_EE5valueEiE4typeE']

27 66 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_typed_array(jsoncons::detail::span const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1518
27 62 7 :

['jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_byte_string_value(jsoncons::byte_string_view const&)', 'std::__1::vector >::vector(unsigned long)', 'std::__1::vector >::~vector()', 'std::__1::vector >::data()', 'jsoncons::detail::span ::data() const', 'jsoncons::cbor::basic_cbor_encoder >, void>, std::__1::allocator >::write_typed_array_tag(std::__1::integral_constant , double, jsoncons::semantic_tag)', '_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS7_EE5valueEiE4typeE']

27 66 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::visit_typed_array(jsoncons::detail::span const&,jsoncons::semantic_tag,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:1548
26 26 1 :

['_ZN8jsoncons6detail12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::detail::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:152
21 37 6 :

['__cxa_allocate_exception', '__cxa_throw', 'jsoncons::detail::to_integer_result ::error_code() const', 'jsoncons::json_runtime_error ::json_runtime_error(std::__1::basic_string , std::__1::allocator > const&)', '__cxa_free_exception', 'std::__1::error_code::message() const']

21 37 jsoncons::cbor::basic_cbor_encoder >,void>,std::__1::allocator >::write_hexfloat_value(jsoncons::detail::basic_string_view >const&,jsoncons::ser_contextconst&,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons_ext/cbor/cbor_encoder.hpp:798

Runtime coverage analysis

Covered functions
410
Functions that are reachable but not covered
38
Reachable functions
354
Percentage of reachable functions covered
89.27%
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_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 10
/src/jsoncons/./include/jsoncons/json_visitor.hpp 4
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 8
/src/jsoncons/./include/jsoncons/config/binary_config.hpp 8
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_reader.hpp 3
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_parser.hpp 36
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 13
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 33
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/byte_string.hpp 4
/src/jsoncons/./include/jsoncons/bigint.hpp 21
/usr/local/bin/../include/c++/v1/math.h 1
/src/jsoncons/./include/jsoncons/detail/span.hpp 11
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_detail.hpp 1
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/write_number.hpp 7

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 52 11.0%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 419 88.9%
All colors 471 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
28 52 3 :

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

28 104 jsoncons::basic_bigint >::unnormalize(jsoncons::basic_bigint >&,int,int)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1553
26 26 1 :

['_ZN8jsoncons6detail12from_integerIiNS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEENS3_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESC_RT0_']

26 26 voidjsoncons::detail::fill_exponent ,std::__1::allocator >>>(int,jsoncons::string_sink ,std::__1::allocator >>&) call site: 00000 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:152
22 166 10 :

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

22 239 jsoncons::basic_bigint >::operator-=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:600
21 21 6 :

['std::__1::basic_string , std::__1::allocator >::basic_string (char const*)', 'jsoncons::json_runtime_error ::json_runtime_error(std::__1::basic_string , std::__1::allocator > const&)', '__cxa_allocate_exception', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '__cxa_free_exception', '__cxa_throw']

21 21 _ZNK8jsoncons6detail8chars_toclIcEENSt3__19enable_ifIXsr3std7is_sameIT_cEE5valueEdE4typeEPKS5_m call site: 00000 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:1109
8 8 4 :

['std::runtime_error::runtime_error(char const*)', '__cxa_allocate_exception', '__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/bigint.hpp:1352
0 81 3 :

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

0 81 jsoncons::basic_bigint >::operator+=(jsoncons::basic_bigint >const&) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:572
0 44 1 :

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

0 44 jsoncons::basic_bigint >::normalize(jsoncons::basic_bigint >&,jsoncons::basic_bigint >&,int&)const call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:1542
0 19 1 :

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

0 78 jsoncons::basic_bigint >::operator>>=(unsignedlong) call site: 00000 /src/jsoncons/./include/jsoncons/bigint.hpp:768
0 7 1 :

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

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

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

0 6 booljsoncons::detail::dtoa_general ,std::__1::allocator >>>(double,char,jsoncons::string_sink ,std::__1::allocator >>&,std::__1::integral_constant ) call site: 00000 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:321
0 0 None 118 258 _ZN8jsoncons4cbor11decode_cborINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEENS4_9enable_ifIXsr16extension_traits13is_basic_jsonIT_EE5valueES9_E4typeERNS4_13basic_istreamIcNS4_11char_traitsIcEEEERKNS0_19cbor_decode_optionsE call site: 00422 /src/jsoncons/./include/jsoncons_ext/cbor/decode_cbor.hpp:70
0 0 None 17 19 _ZN8jsoncons6detail21integer_to_string_hexImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_ call site: 00331 /src/jsoncons/./include/jsoncons/detail/write_number.hpp:93

Runtime coverage analysis

Covered functions
677
Functions that are reachable but not covered
72
Reachable functions
484
Percentage of reachable functions covered
85.12%
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/cbor_options.hpp 6
/src/jsoncons/./include/jsoncons_ext/cbor/decode_cbor.hpp 1
/src/jsoncons/./include/jsoncons/json_decoder.hpp 4
/src/jsoncons/./include/jsoncons/json_visitor.hpp 4
/src/jsoncons/./include/jsoncons/basic_json.hpp 32
/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 37
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/source.hpp 13
/src/jsoncons/./include/jsoncons/item_event_visitor.hpp 33
/src/jsoncons/./include/jsoncons/config/jsoncons_config.hpp 5
/src/jsoncons/./include/jsoncons/config/binary_config.hpp 8
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/byte_string.hpp 4
/src/jsoncons/./include/jsoncons/bigint.hpp 21
/usr/local/bin/../include/c++/v1/math.h 1
/src/jsoncons/./include/jsoncons/detail/span.hpp 11
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1
/src/jsoncons/./include/jsoncons_ext/cbor/cbor_detail.hpp 1
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 2
/src/jsoncons/./include/jsoncons/detail/write_number.hpp 7
/src/jsoncons/./include/jsoncons/json_exception.hpp 5

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 55 16.5%
gold [1:9] 3 0.90%
yellow [10:29] 5 1.50%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 269 81.0%
All colors 332 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
21 21 6 :

['std::__1::basic_string , std::__1::allocator >::basic_string (char const*)', 'jsoncons::json_runtime_error ::json_runtime_error(std::__1::basic_string , std::__1::allocator > const&)', '__cxa_allocate_exception', 'std::__1::basic_string , std::__1::allocator >::~basic_string()', '__cxa_free_exception', '__cxa_throw']

21 21 _ZNK8jsoncons6detail8chars_toclIcEENSt3__19enable_ifIXsr3std7is_sameIT_cEE5valueEdE4typeEPKS5_m call site: 00112 /src/jsoncons/./include/jsoncons/detail/parse_number.hpp:1109
7 7 2 :

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

20 26 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:185
5 5 1 :

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

13 17 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:189
0 4 2 :

['jsoncons::basic_json_visitor ::string_value(jsoncons::detail::basic_string_view > const&, jsoncons::semantic_tag, jsoncons::ser_context const&, std::__1::error_code&)', 'jsoncons::detail::basic_string_view >::basic_string_view , std::__1::allocator >(std::__1::basic_string , std::__1::allocator > const&)']

10 49 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:2686
0 2 2 :

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

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:2731
0 2 2 :

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

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:2745
0 0 None 17 3549 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:632
0 0 None 17 3549 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:749
0 0 None 17 3549 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:829
0 0 None 17 3549 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:877
0 0 None 17 3549 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:887
0 0 None 17 3549 jsoncons::basic_json_parser >::parse_some_(jsoncons::basic_json_visitor &,std::__1::error_code&) call site: 00000 /src/jsoncons/./include/jsoncons/json_parser.hpp:904

Runtime coverage analysis

Covered functions
119
Functions that are reachable but not covered
50
Reachable functions
244
Percentage of reachable functions covered
79.51%
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_options.hpp 18
/src/jsoncons/./include/jsoncons/json_reader.hpp 7
/src/jsoncons/./include/jsoncons/source_adaptor.hpp 5
/src/jsoncons/./include/jsoncons/source.hpp 10
/src/jsoncons/./include/jsoncons/json_parser.hpp 34
/src/jsoncons/./include/jsoncons/ser_context.hpp 2
/src/jsoncons/./include/jsoncons/detail/parse_number.hpp 10
/src/jsoncons/./include/jsoncons/detail/span.hpp 4
/src/jsoncons/./include/jsoncons/unicode_traits.hpp 7
/src/jsoncons/./include/jsoncons/config/compiler_support.hpp 1
/src/jsoncons/./include/jsoncons/detail/string_view.hpp 2
/src/jsoncons/./include/jsoncons/json_exception.hpp 2
/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 174 39.2%
gold [1:9] 71 16.0%
yellow [10:29] 3 0.67%
greenyellow [30:49] 3 0.67%
lawngreen 50+ 192