From a331fabe0f4054931bafd44b9909c559e33e8455 Mon Sep 17 00:00:00 2001 From: zhangxinyu Date: Mon, 21 Aug 2023 11:17:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=89=E8=A3=85=E5=8D=B8?= =?UTF-8?q?=E8=BD=BD=E8=AF=B7=E6=B1=82=E5=8F=82=E6=95=B0=E9=94=99=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhangxinyu --- .../src/slite/bundlems_slite_client.cpp | 33 +++++++------------ .../bundlemgr_lite/src/bundle_mgr_service.cpp | 20 +++++++---- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/frameworks/bundle_lite/src/slite/bundlems_slite_client.cpp b/frameworks/bundle_lite/src/slite/bundlems_slite_client.cpp index 11a0495..42cc307 100644 --- a/frameworks/bundle_lite/src/slite/bundlems_slite_client.cpp +++ b/frameworks/bundle_lite/src/slite/bundlems_slite_client.cpp @@ -60,9 +60,6 @@ bool BundleMsClient::Initialize() const bool BundleMsClient::Install(const char *hapPath, const InstallParam *installParam, InstallerCallback installerCallback) const { - if (g_bmsbuff == nullptr) { - g_bmsbuff = reinterpret_cast(OhosMalloc(MEM_TYPE_APPFMK_LSRAM, sizeof(Bmsbuff))); - } BundleMgrService *service = BundleMgrService::GetInstance(); if (service == nullptr) { return false; @@ -70,22 +67,20 @@ bool BundleMsClient::Install(const char *hapPath, const InstallParam *installPar if (hapPath == nullptr) { return false; } - - if (memset_s(g_bmsbuff->bundleParameter, MAX_PATH_LEN, 0, MAX_PATH_LEN) != 0) { - return false; - } int len = strlen(hapPath); if (len >= MAX_PATH_LEN) { return false; } - if (memcpy_s(g_bmsbuff->bundleParameter, MAX_PATH_LEN, hapPath, len + 1) != 0) { + Bmsbuff *data = static_cast(AdapterMalloc(sizeof(Bmsbuff))); + if (memcpy_s(data->bundleParameter, MAX_PATH_LEN, hapPath, len + 1) != 0) { + AdapterFree(data); return false; } - g_bmsbuff->bundleInstallerCallback = installerCallback; + data->bundleInstallerCallback = installerCallback; Request request = { .msgId = BMS_INSTALL_MSG, - .len = 0, - .data = nullptr, + .len = sizeof(Bmsbuff), + .data = data, .msgValue = 0, }; @@ -103,24 +98,20 @@ bool BundleMsClient::Uninstall (const char *bundleName, const InstallParam *inst if (bundleName == nullptr) { return false; } - if (g_bmsbuff == nullptr) { - g_bmsbuff = reinterpret_cast(OhosMalloc(MEM_TYPE_APPFMK_LSRAM, sizeof(Bmsbuff))); - } - if (memset_s(g_bmsbuff->bundleParameter, MAX_PATH_LEN, 0, MAX_PATH_LEN) != 0) { - return false; - } int len = strlen(bundleName); if (len >= MAX_PATH_LEN) { return false; } - if (memcpy_s(g_bmsbuff->bundleParameter, MAX_PATH_LEN, bundleName, len + 1) != 0) { + Bmsbuff *data = static_cast(AdapterMalloc(sizeof(Bmsbuff))); + if (memcpy_s(data->bundleParameter, MAX_PATH_LEN, bundleName, len + 1) != 0) { + AdapterFree(data); return false; } - g_bmsbuff->bundleInstallerCallback = installerCallback; + data->bundleInstallerCallback = installerCallback; Request request = { .msgId = BMS_UNINSTALL_MSG, - .len = 0, - .data = nullptr, + .len = sizeof(Bmsbuff), + .data = data, .msgValue = 0, }; int32_t ret = SAMGR_SendRequest(service->GetIdentity(), &request, nullptr); diff --git a/services/bundlemgr_lite/src/bundle_mgr_service.cpp b/services/bundlemgr_lite/src/bundle_mgr_service.cpp index c953e23..51e096d 100644 --- a/services/bundlemgr_lite/src/bundle_mgr_service.cpp +++ b/services/bundlemgr_lite/src/bundle_mgr_service.cpp @@ -86,12 +86,20 @@ BOOL BundleMgrService::ServiceMessageHandle(Service *service, Request *request) if (request == nullptr) { return FALSE; } - if (request->msgId == BMS_INSTALL_MSG && g_bmsbuff != nullptr) { - OHOS::GtManagerService::GetInstance().Install(g_bmsbuff->bundleParameter, nullptr, - g_bmsbuff->bundleInstallerCallback); - } else if (request->msgId == BMS_UNINSTALL_MSG && g_bmsbuff != nullptr) { - OHOS::GtManagerService::GetInstance().Uninstall(g_bmsbuff->bundleParameter, nullptr, - g_bmsbuff->bundleInstallerCallback); + if (request->msgId == BMS_INSTALL_MSG) { + Bmsbuff *data = static_cast(request->data); + OHOS::GtManagerService::GetInstance().Install(data->bundleParameter, nullptr, + data->bundleInstallerCallback); + AdapterFree(request->data); + request->data = nullptr; + request->len = 0; + } else if (request->msgId == BMS_UNINSTALL_MSG) { + Bmsbuff *data = static_cast(request->data); + OHOS::GtManagerService::GetInstance().Uninstall(data->bundleParameter, nullptr, + data->bundleInstallerCallback); + AdapterFree(request->data); + request->data = nullptr; + request->len = 0; } else if (request->msgId == BMS_SCAN_PACKAGE_MSG) { OHOS::GtManagerService::GetInstance().ScanPackages(); } else if (request->msgId == BMS_REGISTER_CALLBACK_MSG && g_bmsbuff != nullptr) { -- Gitee