From 104840571154d501772275f6000fa9b543204853 Mon Sep 17 00:00:00 2001 From: zhongjianfei Date: Fri, 25 Feb 2022 10:34:51 +0800 Subject: [PATCH] zhongjianfei@huawei.com Signed-off-by: zhongjianfei Change-Id: Iabf2dbedbb71a0fca2f908a1df6dbaff1a26d76b --- .../form_manager/src/form_provider_data.cpp | 22 ++++++++++++++++--- .../runtime/include/js_runtime_utils.h | 8 ++++--- .../form_binding_data/form_binding_data.cpp | 5 ++--- .../abilitymgr/src/ability_manager_proxy.cpp | 2 +- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/interfaces/innerkits/form_manager/src/form_provider_data.cpp b/interfaces/innerkits/form_manager/src/form_provider_data.cpp index fa5d0a85d5d..66072d55240 100755 --- a/interfaces/innerkits/form_manager/src/form_provider_data.cpp +++ b/interfaces/innerkits/form_manager/src/form_provider_data.cpp @@ -57,7 +57,12 @@ FormProviderData::FormProviderData(std::string jsonDataString) if (jsonDataString.empty()) { jsonDataString = JSON_EMPTY_STRING; } - jsonFormProviderData_ = nlohmann::json::parse(jsonDataString); + nlohmann::json jsonObject = nlohmann::json::parse(jsonDataString, nullptr, false); + if (jsonObject.is_discarded()) { + HILOG_ERROR("failed to parse jsonDataString: %{public}s.", jsonDataString.c_str()); + return; + } + jsonFormProviderData_ = jsonObject; } /** @@ -164,7 +169,12 @@ void FormProviderData::SetDataString(std::string &jsonDataString) if (jsonDataString.empty()) { jsonDataString = JSON_EMPTY_STRING; } - jsonFormProviderData_ = nlohmann::json::parse(jsonDataString); + nlohmann::json jsonObject = nlohmann::json::parse(jsonDataString, nullptr, false); + if (jsonObject.is_discarded()) { + HILOG_ERROR("failed to parse jsonDataString: %{public}s.", jsonDataString.c_str()); + return; + } + jsonFormProviderData_ = jsonObject; } /** * @brief Merge new data to FormProviderData. @@ -230,7 +240,13 @@ void FormProviderData::SetImageDataMap(std::mapGetLength(); - value.resize(len); - stringValue->GetCString(value.data(), len, &len); + size_t len = stringValue->GetLength() + 1; + auto buffer = std::make_unique(len); + size_t strLength = 0; + stringValue->GetCString(buffer.get(), len, &strLength); + value = buffer.get(); return true; } else if constexpr (std::is_enum_v) { auto numberValue = ConvertNativeValueTo(jsValue); diff --git a/interfaces/kits/napi/aafwk/form_binding_data/form_binding_data.cpp b/interfaces/kits/napi/aafwk/form_binding_data/form_binding_data.cpp index a8c91529ee2..7330ca42933 100644 --- a/interfaces/kits/napi/aafwk/form_binding_data/form_binding_data.cpp +++ b/interfaces/kits/napi/aafwk/form_binding_data/form_binding_data.cpp @@ -67,7 +67,6 @@ NativeValue* FormBindingData::OnCreateFormBindingData(NativeEngine& engine, Nati } else if ((info.argv[0])->TypeOf() == NATIVE_OBJECT) { HILOG_DEBUG("%{public}s called, param type is object.", __func__); napi_env napiEnv = reinterpret_cast(&engine); - napi_value globalValue = nullptr; napi_get_global(napiEnv, &globalValue); napi_value jsonValue; @@ -93,7 +92,7 @@ NativeValue* FormBindingData::OnCreateFormBindingData(NativeEngine& engine, Nati NativeObject* object = ConvertNativeValueTo(objValue); formProviderData_->SetDataString(formDataStr); object->SetProperty("data", CreateJsValue(engine, formDataStr)); - HILOG_INFO("%{public}s called end.", __func__); + HILOG_INFO("%{public}s called:%{public}s", __func__, formDataStr.c_str()); return objValue; } @@ -139,4 +138,4 @@ NativeValue* FormBindingDataInit(NativeEngine* engine, NativeValue* exportObj) return exportObj; } } // namespace AbilityRuntime -} // namespace OHOS \ No newline at end of file +} // namespace OHOS diff --git a/services/abilitymgr/src/ability_manager_proxy.cpp b/services/abilitymgr/src/ability_manager_proxy.cpp index 7fa4da4b988..51742b52d33 100644 --- a/services/abilitymgr/src/ability_manager_proxy.cpp +++ b/services/abilitymgr/src/ability_manager_proxy.cpp @@ -1103,7 +1103,7 @@ bool AbilityManagerProxy::IsFirstInMission(const sptr &token) MessageOption option; if (!WriteInterfaceToken(data)) { - return INNER_ERR; + return false; } if (!data.WriteParcelable(token)) { HILOG_ERROR("token write failed."); -- Gitee