From f79d67a04e34cded0ddd35ef1c8856c03f2f67de Mon Sep 17 00:00:00 2001 From: Changgyu Choi Date: Tue, 10 Aug 2021 11:40:17 +0900 Subject: [PATCH] Fix static analysis issue Change-Id: I3ec9056c3341ad3512d5bdfe4283c00fee19b108 Signed-off-by: Changgyu Choi --- src/json-internal.cc | 6 +++++- tests/bundle_unittests/src/test_bundle.cc | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/json-internal.cc b/src/json-internal.cc index 770a214..dd8c7df 100644 --- a/src/json-internal.cc +++ b/src/json-internal.cc @@ -136,6 +136,9 @@ void Json::OnJsonObjectMember(JsonObject* object, const char* key, guint len = json_array_get_length(json_arr); for (guint i = 0; i < len; ++i) { auto* val = json_array_get_string_element(json_arr, i); + if (val == nullptr) + val = ""; + auto* p = reinterpret_cast(const_cast(val)); std::vector value; std::copy(p, p + (strlen(val) + 1), std::back_inserter(value)); @@ -154,7 +157,8 @@ void Json::OnJsonObjectMember(JsonObject* object, const char* key, } else { auto* val = json_node_get_string(node); if (val == nullptr) - return; + val = ""; + auto* p = reinterpret_cast(const_cast(val)); std::vector value; std::copy(p, p + (strlen(val) + 1), std::back_inserter(value)); diff --git a/tests/bundle_unittests/src/test_bundle.cc b/tests/bundle_unittests/src/test_bundle.cc index cd4e520..6f9ad4f 100644 --- a/tests/bundle_unittests/src/test_bundle.cc +++ b/tests/bundle_unittests/src/test_bundle.cc @@ -1184,6 +1184,25 @@ TEST_F(BundleTest, bundle_from_json_P) { ASSERT_EQ(std::string(val_array[1]), "VALUE1"); } +TEST_F(BundleTest, bundle_from_json_2) { + const char json[] = "{\"KEY1\":0,\"KEY2\":[0]}"; + bundle* json_b = nullptr; + int ret = bundle_from_json(json, &json_b); + std::unique_ptr b_ptr(json_b, bundle_free); + ASSERT_EQ(ret, BUNDLE_ERROR_NONE); + + const char* val = bundle_get_val(json_b, "KEY1"); + ASSERT_EQ(get_last_result(), BUNDLE_ERROR_NONE); + ASSERT_EQ(std::string(val), ""); + + int len = 0; + const char** val_array = bundle_get_str_array(json_b, "KEY2", &len); + ASSERT_EQ(get_last_result(), BUNDLE_ERROR_NONE); + ASSERT_NE(val_array, nullptr); + ASSERT_NE(len, 0); + ASSERT_EQ(std::string(val_array[0]), ""); +} + TEST_F(BundleTest, bundle_from_json_N) { int ret = bundle_from_json(nullptr, nullptr); ASSERT_EQ(ret, BUNDLE_ERROR_INVALID_PARAMETER); -- 2.7.4