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

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
93 98 3 :

['json_proto::NumberValue::MergeFrom(json_proto::NumberValue const&)', 'json_proto::JsonValue::_internal_number_value() const', 'json_proto::JsonValue::_internal_mutable_number_value()']

101 106 json_proto::JsonValue::MergeImpl(google::protobuf::Message&,google::protobuf::Messageconst&) call site: 00000 /src/jsoncpp/build/genfiles/json.pb.cc:1483
66 71 3 :

['json_proto::JsonObject::MergeFrom(json_proto::JsonObject const&)', 'json_proto::JsonValue::_internal_mutable_object_value()', 'json_proto::JsonValue::_internal_object_value() const']

74 79 json_proto::JsonValue::MergeImpl(google::protobuf::Message&,google::protobuf::Messageconst&) call site: 00000 /src/jsoncpp/build/genfiles/json.pb.cc:1483
58 63 3 :

['json_proto::StringValue::MergeFrom(json_proto::StringValue const&)', 'json_proto::JsonValue::_internal_string_value() const', 'json_proto::JsonValue::_internal_mutable_string_value()']

66 71 json_proto::JsonValue::MergeImpl(google::protobuf::Message&,google::protobuf::Messageconst&) call site: 00000 /src/jsoncpp/build/genfiles/json.pb.cc:1483
57 62 3 :

['json_proto::JsonValue::_internal_mutable_array_value()', 'json_proto::ArrayValue::MergeFrom(json_proto::ArrayValue const&)', 'json_proto::JsonValue::_internal_array_value() const']

65 70 json_proto::JsonValue::MergeImpl(google::protobuf::Message&,google::protobuf::Messageconst&) call site: 00000 /src/jsoncpp/build/genfiles/json.pb.cc:1483
47 52 3 :

['json_proto::JsonValue::_internal_boolean_value() const', 'json_proto::JsonValue::_internal_mutable_boolean_value()', 'json_proto::BooleanValue::MergeFrom(json_proto::BooleanValue const&)']

55 60 json_proto::JsonValue::MergeImpl(google::protobuf::Message&,google::protobuf::Messageconst&) call site: 00000 /src/jsoncpp/build/genfiles/json.pb.cc:1483
0 17 3 :

['std::__1::basic_string , std::__1::allocator >::~basic_string()', 'std::__1::basic_string , std::__1::allocator >::basic_string (char const*)', 'Json::throwRuntimeError(std::__1::basic_string , std::__1::allocator > const&)']

0 17 Json::duplicateStringValue(charconst*,unsignedlong) call site: 00000 /src/jsoncpp/src/lib_json/json_value.cpp:122
0 0 None 8 8 json_proto::JsonObject::MergeImpl(google::protobuf::Message&,google::protobuf::Messageconst&) call site: 00000 /src/jsoncpp/build/genfiles/json.pb.cc:1007
0 0 None 0 194 Json::OurReader::readObject(Json::OurReader::Token&) call site: 00000 /src/jsoncpp/src/lib_json/json_reader.cpp:1476
0 0 None 0 31 Json::OurReader::decodeDouble(Json::OurReader::Token&,Json::Value&) call site: 00000 /src/jsoncpp/src/lib_json/json_reader.cpp:1657
0 0 1 :

['std::__1::numeric_limits ::infinity()']

0 31 Json::OurReader::decodeDouble(Json::OurReader::Token&,Json::Value&) call site: 00000 /src/jsoncpp/src/lib_json/json_reader.cpp:1659
0 0 None 0 30 Json::OurReader::readObject(Json::OurReader::Token&) call site: 00000 /src/jsoncpp/src/lib_json/json_reader.cpp:1474
0 0 None 0 17 Json::OurReader::readValue() call site: 00000 /src/jsoncpp/src/lib_json/json_reader.cpp:1123

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 json_proto::JsonParseAPI::JsonParseAPI() [function] [call site] 00001
2 json_proto::JsonParseAPI::JsonParseAPI(google::protobuf::Arena*) [function] [call site] 00002
3 google::protobuf::Message::Message(google::protobuf::Arena*) [function] [call site] 00003
4 google::protobuf::MessageLite::MessageLite(google::protobuf::Arena*) [function] [call site] 00004
5 google::protobuf::internal::InternalMetadata::InternalMetadata(google::protobuf::Arena*) [function] [call site] 00005
3 json_proto::JsonParseAPI::SharedCtor(google::protobuf::Arena*) [function] [call site] 00006
4 google::protobuf::internal::CachedSize::CachedSize() [function] [call site] 00007
3 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00008
1 protobuf_mutator::libfuzzer::LoadProtoInput(bool, unsigned char const*, unsigned long, google::protobuf::Message*) [call site] 00009
1 TestOneProtoInput(json_proto::JsonParseAPI const&) [function] [call site] 00010
2 json_proto::JsonProtoConverter::JsonProtoConverter() [function] [call site] 00011
2 json_proto::JsonParseAPI::object_value() const [function] [call site] 00012
3 json_proto::JsonParseAPI::_internal_object_value() const [function] [call site] 00013
2 json_proto::JsonProtoConverter::Convert(json_proto::JsonObject const&) [function] [call site] 00014
3 json_proto::JsonProtoConverter::AppendObject(json_proto::JsonObject const&) [function] [call site] 00015
4 json_proto::JsonObject::name() const [function] [call site] 00016
5 json_proto::JsonObject::_internal_name() const [function] [call site] 00017
6 google::protobuf::internal::TaggedStringPtr::Get() const [function] [call site] 00018
7 google::protobuf::internal::TaggedStringPtr::as_int() const [function] [call site] 00019
4 json_proto::JsonObject::value() const [function] [call site] 00020
5 json_proto::JsonObject::_internal_value() const [function] [call site] 00021
4 json_proto::JsonProtoConverter::AppendValue(json_proto::JsonValue const&) [function] [call site] 00022
5 json_proto::JsonValue::has_object_value() const [function] [call site] 00023
6 json_proto::JsonValue::value_case() const [function] [call site] 00024
5 json_proto::JsonValue::object_value() const [function] [call site] 00025
6 json_proto::JsonValue::_internal_object_value() const [function] [call site] 00026
7 json_proto::JsonValue::value_case() const [function] [call site] 00027
5 json_proto::JsonProtoConverter::AppendObject(json_proto::JsonObject const&) [function] [call site] 00028
5 json_proto::JsonValue::array_value() const [function] [call site] 00029
6 json_proto::JsonValue::_internal_array_value() const [function] [call site] 00030
7 json_proto::JsonValue::value_case() const [function] [call site] 00031
5 json_proto::JsonProtoConverter::AppendArray(json_proto::ArrayValue const&) [function] [call site] 00032
6 json_proto::ArrayValue::value() const [function] [call site] 00033
6 google::protobuf::RepeatedPtrField ::begin() const [function] [call site] 00034
7 google::protobuf::internal::RepeatedPtrFieldBase::raw_data() const [function] [call site] 00035
6 json_proto::JsonProtoConverter::AppendValue(json_proto::JsonValue const&) [function] [call site] 00036
7 json_proto::JsonValue::number_value() const [function] [call site] 00037
8 json_proto::JsonValue::_internal_number_value() const [function] [call site] 00038
9 json_proto::JsonValue::value_case() const [function] [call site] 00039
7 json_proto::JsonProtoConverter::AppendNumber(json_proto::NumberValue const&) [function] [call site] 00040
8 json_proto::NumberValue::has_float_value() const [function] [call site] 00041
9 json_proto::NumberValue::value_case() const [function] [call site] 00042
8 json_proto::NumberValue::float_value() const [function] [call site] 00043
9 json_proto::NumberValue::_internal_float_value() const [function] [call site] 00044
10 json_proto::NumberValue::value_case() const [function] [call site] 00045
8 json_proto::NumberValue::has_exponent_value() const [function] [call site] 00046
9 json_proto::NumberValue::value_case() const [function] [call site] 00047
8 json_proto::NumberValue::exponent_value() const [function] [call site] 00048
9 json_proto::NumberValue::_internal_exponent_value() const [function] [call site] 00049
10 json_proto::NumberValue::value_case() const [function] [call site] 00050
8 json_proto::NumberExponent::NumberExponent(json_proto::NumberExponent const&) [function] [call site] 00051
9 google::protobuf::Message::Message() [function] [call site] 00052
10 google::protobuf::MessageLite::MessageLite() [function] [call site] 00053
11 google::protobuf::internal::InternalMetadata::InternalMetadata() [function] [call site] 00054
9 google::protobuf::internal::InternalMetadata::Container * google::protobuf::internal::InternalMetadata::PtrValue >() const [function] [call site] 00055
9 void google::protobuf::internal::InternalMetadata::DoMergeFrom (google::protobuf::UnknownFieldSet const&) [function] [call site] 00056
10 google::protobuf::internal::InternalMetadata::Container * google::protobuf::internal::InternalMetadata::PtrValue >() const [function] [call site] 00057
10 google::protobuf::UnknownFieldSet::MergeFrom(google::protobuf::UnknownFieldSet const&) [call site] 00058
9 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00059
8 json_proto::NumberExponent::base() const [function] [call site] 00060
9 json_proto::NumberExponent::_internal_base() const [function] [call site] 00061
8 json_proto::NumberExponent::use_uppercase() const [function] [call site] 00062
9 json_proto::NumberExponent::_internal_use_uppercase() const [function] [call site] 00063
8 json_proto::NumberExponent::exponent() const [function] [call site] 00064
9 json_proto::NumberExponent::_internal_exponent() const [function] [call site] 00065
8 json_proto::NumberExponent::~NumberExponent() [function] [call site] 00066
9 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteReturnArena () [function] [call site] 00067
10 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteOutOfLineHelper () [function] [call site] 00068
11 google::protobuf::internal::InternalMetadata::ContainerBase* google::protobuf::internal::InternalMetadata::PtrValue () const [function] [call site] 00069
11 google::protobuf::internal::InternalMetadata::Container * google::protobuf::internal::InternalMetadata::PtrValue >() const [function] [call site] 00070
10 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::PtrValue () const [function] [call site] 00071
9 json_proto::NumberExponent::SharedDtor() [function] [call site] 00072
9 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00073
9 __clang_call_terminate [call site] 00074
10 __cxa_begin_catch [call site] 00075
8 json_proto::NumberValue::has_exponent_frac_value() const [function] [call site] 00076
9 json_proto::NumberValue::value_case() const [function] [call site] 00077
8 json_proto::NumberValue::exponent_value() const [function] [call site] 00078
8 json_proto::NumberExponent::NumberExponent(json_proto::NumberExponent const&) [function] [call site] 00079
8 json_proto::NumberExponent::base() const [function] [call site] 00080
8 json_proto::NumberExponent::use_uppercase() const [function] [call site] 00081
8 json_proto::NumberExponent::exponent() const [function] [call site] 00082
8 json_proto::NumberExponent::~NumberExponent() [function] [call site] 00083
8 json_proto::NumberValue::integer_value() const [function] [call site] 00084
9 json_proto::NumberValue::_internal_integer_value() const [function] [call site] 00085
7 json_proto::JsonValue::has_string_value() const [function] [call site] 00086
8 json_proto::JsonValue::value_case() const [function] [call site] 00087
7 json_proto::JsonValue::string_value() const [function] [call site] 00088
8 json_proto::JsonValue::_internal_string_value() const [function] [call site] 00089
9 json_proto::JsonValue::value_case() const [function] [call site] 00090
7 json_proto::JsonValue::has_boolean_value() const [function] [call site] 00091
8 json_proto::JsonValue::value_case() const [function] [call site] 00092
7 json_proto::JsonValue::boolean_value() const [function] [call site] 00093
8 json_proto::JsonValue::_internal_boolean_value() const [function] [call site] 00094
9 json_proto::JsonValue::value_case() const [function] [call site] 00095
2 FuzzJson(std::__1::basic_string , std::__1::allocator >, int) [function] [call site] 00096
3 Json::CharReaderBuilder::CharReaderBuilder() [function] [call site] 00097
4 Json::CharReader::Factory::Factory() [function] [call site] 00098
4 Json::Value::Value(Json::ValueType) [function] [call site] 00099
5 Json::Value::Comments::Comments() [function] [call site] 00100
5 Json::Value::initBasic(Json::ValueType, bool) [function] [call site] 00101
6 Json::Value::setType(Json::ValueType) [function] [call site] 00102
6 Json::Value::setIsAllocated(bool) [function] [call site] 00103
6 Json::Value::Comments::Comments() [function] [call site] 00104
6 Json::Value::Comments::operator=(Json::Value::Comments&&) [function] [call site] 00105
5 Json::Value::Comments::~Comments() [function] [call site] 00106
4 Json::CharReaderBuilder::setDefaults(Json::Value*) [function] [call site] 00107
5 Json::Value::Value(bool) [function] [call site] 00108
6 Json::Value::Comments::Comments() [function] [call site] 00109
6 Json::Value::initBasic(Json::ValueType, bool) [function] [call site] 00110
5 Json::Value::Value(bool) [function] [call site] 00111
5 Json::Value::Value(bool) [function] [call site] 00112
5 Json::Value::Value(bool) [function] [call site] 00113
5 Json::Value::Value(bool) [function] [call site] 00114
5 Json::Value::Value(bool) [function] [call site] 00115
5 Json::Value::Value(bool) [function] [call site] 00116
5 Json::Value::Value(int) [function] [call site] 00117
6 Json::Value::Comments::Comments() [function] [call site] 00118
6 Json::Value::initBasic(Json::ValueType, bool) [function] [call site] 00119
5 Json::Value::Value(bool) [function] [call site] 00120
5 Json::Value::Value(bool) [function] [call site] 00121
5 Json::Value::Value(bool) [function] [call site] 00122
5 Json::Value::Value(bool) [function] [call site] 00123
3 Json::Value::Value(int) [function] [call site] 00124
3 Json::Value::Value(int) [function] [call site] 00125
3 Json::Value::Value(int) [function] [call site] 00126
3 Json::Value::Value(int) [function] [call site] 00127
3 Json::Value::Value(int) [function] [call site] 00128
3 Json::Value::Value(int) [function] [call site] 00129
3 Json::Value::Value(int) [function] [call site] 00130
3 Json::Value::Value(int) [function] [call site] 00131
3 Json::Value::Value(int) [function] [call site] 00132
3 Json::Value::Value(int) [function] [call site] 00133
3 Json::Value::Value(int) [function] [call site] 00134
3 Json::CharReaderBuilder::newCharReader() const [function] [call site] 00135
4 Json::Value::operator[](char const*) const [function] [call site] 00136
5 strlen [call site] 00137
5 Json::Value::find(char const*, char const*) const [function] [call site] 00138
6 Json::Value::type() const [function] [call site] 00139
6 Json::Value::CZString::CZString(char const*, unsigned int, Json::Value::CZString::DuplicationPolicy) [function] [call site] 00140
6 Json::Value::CZString::~CZString() [function] [call site] 00141
7 Json::releaseStringValue(char*, unsigned int) [function] [call site] 00142
5 Json::Value::nullSingleton() [function] [call site] 00143
6 __cxa_guard_acquire [call site] 00144
6 Json::Value::Value(Json::ValueType) [function] [call site] 00145
4 Json::OurFeatures::all() [function] [call site] 00146
4 Json::Value::operator[](char const*) const [function] [call site] 00147
4 Json::Value::operator[](char const*) const [function] [call site] 00148
4 Json::Value::operator[](char const*) const [function] [call site] 00149
4 Json::Value::operator[](char const*) const [function] [call site] 00150
4 Json::Value::operator[](char const*) const [function] [call site] 00151
4 Json::Value::operator[](char const*) const [function] [call site] 00152
4 Json::Value::operator[](char const*) const [function] [call site] 00153
4 Json::Value::operator[](char const*) const [function] [call site] 00154
4 Json::Value::operator[](char const*) const [function] [call site] 00155
4 Json::Value::operator[](char const*) const [function] [call site] 00156
4 Json::Value::operator[](char const*) const [function] [call site] 00157
4 Json::OurCharReader::OurCharReader(bool, Json::OurFeatures const&) [function] [call site] 00158
5 Json::CharReader::CharReader() [function] [call site] 00159
5 Json::OurReader::OurReader(Json::OurFeatures const&) [function] [call site] 00160
3 Json::Value::Value(Json::ValueType) [function] [call site] 00161
3 __cxa_begin_catch [call site] 00162
3 __cxa_end_catch [call site] 00163
3 Json::Value::~Value() [function] [call site] 00164
4 Json::Value::releasePayload() [function] [call site] 00165
5 Json::Value::type() const [function] [call site] 00166
5 Json::Value::isAllocated() const [function] [call site] 00167
5 Json::releasePrefixedStringValue(char*) [function] [call site] 00168
4 Json::Value::Comments::~Comments() [function] [call site] 00169
3 Json::CharReaderBuilder::~CharReaderBuilder() [function] [call site] 00170
4 Json::Value::~Value() [function] [call site] 00171
4 Json::CharReader::Factory::~Factory() [function] [call site] 00172
2 json_proto::JsonProtoConverter::~JsonProtoConverter() [function] [call site] 00173
1 json_proto::JsonParseAPI::~JsonParseAPI() [function] [call site] 00174
2 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteReturnArena () [function] [call site] 00175
2 json_proto::JsonParseAPI::SharedDtor() [function] [call site] 00176
3 json_proto::JsonParseAPI::internal_default_instance() [function] [call site] 00177
3 json_proto::JsonObject::~JsonObject() [function] [call site] 00178
4 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteReturnArena () [function] [call site] 00179
4 json_proto::JsonObject::SharedDtor() [function] [call site] 00180
5 google::protobuf::internal::ArenaStringPtr::Destroy() [call site] 00181
5 json_proto::JsonObject::internal_default_instance() [function] [call site] 00182
5 json_proto::JsonValue::~JsonValue() [function] [call site] 00183
6 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteReturnArena () [function] [call site] 00184
6 json_proto::JsonValue::SharedDtor() [function] [call site] 00185
7 json_proto::JsonValue::has_value() const [function] [call site] 00186
8 json_proto::JsonValue::value_case() const [function] [call site] 00187
7 json_proto::JsonValue::clear_value() [function] [call site] 00188
8 json_proto::JsonValue::value_case() const [function] [call site] 00189
8 google::protobuf::MessageLite::GetArenaForAllocation() const [function] [call site] 00190
9 google::protobuf::internal::InternalMetadata::ContainerBase* google::protobuf::internal::InternalMetadata::PtrValue () const [function] [call site] 00191
8 json_proto::JsonObject::~JsonObject() [function] [call site] 00192
9 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00193
9 __clang_call_terminate [call site] 00194
8 google::protobuf::MessageLite::GetArenaForAllocation() const [function] [call site] 00195
8 json_proto::ArrayValue::~ArrayValue() [function] [call site] 00196
9 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteReturnArena () [function] [call site] 00197
9 json_proto::ArrayValue::SharedDtor() [function] [call site] 00198
10 google::protobuf::RepeatedPtrField ::~RepeatedPtrField() [function] [call site] 00199
11 google::protobuf::internal::RepeatedPtrFieldBase::NeedsDestroy() const [function] [call site] 00200
11 google::protobuf::internal::RepeatedPtrFieldBase::DestroyProtos() [call site] 00201
11 google::protobuf::internal::RepeatedPtrFieldBase::~RepeatedPtrFieldBase() [function] [call site] 00202
9 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00203
9 __clang_call_terminate [call site] 00204
8 google::protobuf::MessageLite::GetArenaForAllocation() const [function] [call site] 00205
8 json_proto::NumberValue::~NumberValue() [function] [call site] 00206
9 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteReturnArena () [function] [call site] 00207
9 json_proto::NumberValue::SharedDtor() [function] [call site] 00208
10 json_proto::NumberValue::internal_default_instance() [function] [call site] 00209
10 json_proto::NumberInteger::~NumberInteger() [function] [call site] 00210
11 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteReturnArena () [function] [call site] 00211
11 json_proto::NumberInteger::SharedDtor() [function] [call site] 00212
11 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00213
11 __clang_call_terminate [call site] 00214
10 json_proto::NumberValue::has_value() const [function] [call site] 00215
11 json_proto::NumberValue::value_case() const [function] [call site] 00216
10 json_proto::NumberValue::clear_value() [function] [call site] 00217
11 json_proto::NumberValue::value_case() const [function] [call site] 00218
11 google::protobuf::MessageLite::GetArenaForAllocation() const [function] [call site] 00219
11 json_proto::NumberFloat::~NumberFloat() [function] [call site] 00220
12 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteReturnArena () [function] [call site] 00221
12 json_proto::NumberFloat::SharedDtor() [function] [call site] 00222
12 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00223
12 __clang_call_terminate [call site] 00224
11 google::protobuf::MessageLite::GetArenaForAllocation() const [function] [call site] 00225
11 json_proto::NumberExponent::~NumberExponent() [function] [call site] 00226
11 google::protobuf::MessageLite::GetArenaForAllocation() const [function] [call site] 00227
11 json_proto::NumberExponentFrac::~NumberExponentFrac() [function] [call site] 00228
12 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteReturnArena () [function] [call site] 00229
12 json_proto::NumberExponentFrac::SharedDtor() [function] [call site] 00230
12 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00231
12 __clang_call_terminate [call site] 00232
9 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00233
9 __clang_call_terminate [call site] 00234
8 google::protobuf::MessageLite::GetArenaForAllocation() const [function] [call site] 00235
8 json_proto::StringValue::~StringValue() [function] [call site] 00236
9 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteReturnArena () [function] [call site] 00237
9 json_proto::StringValue::SharedDtor() [function] [call site] 00238
10 google::protobuf::internal::ArenaStringPtr::Destroy() [call site] 00239
9 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00240
9 __clang_call_terminate [call site] 00241
8 google::protobuf::MessageLite::GetArenaForAllocation() const [function] [call site] 00242
8 json_proto::BooleanValue::~BooleanValue() [function] [call site] 00243
9 google::protobuf::Arena* google::protobuf::internal::InternalMetadata::DeleteReturnArena () [function] [call site] 00244
9 json_proto::BooleanValue::SharedDtor() [function] [call site] 00245
9 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00246
9 __clang_call_terminate [call site] 00247
6 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00248
6 __clang_call_terminate [call site] 00249
2 google::protobuf::MessageLite::~MessageLite() [function] [call site] 00250
2 __clang_call_terminate [call site] 00251