diff --git a/interfaces/innerkits/form_manager/src/form_provider_data.cpp b/interfaces/innerkits/form_manager/src/form_provider_data.cpp index fa5d0a85d5d50f89963c5e59fe10c2862558a4ae..66072d552401a7793ffaaad31772a78e60843701 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 a8c91529ee2a98cb3514e036e3347f78e9e89841..7330ca429334f09c3055f7842f2d5ec024eb21fc 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 7fa4da4b988dbf8aed327345b29d055e4cce2c42..51742b52d3347038e0c1d8c5b74bd7e8598a781a 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.");