From bb89373356ea98ba90ed90f7d955780e30fc3289 Mon Sep 17 00:00:00 2001 From: baoyang Date: Tue, 22 Jul 2025 15:53:50 +0800 Subject: [PATCH] fix difference Signed-off-by: baoyang Change-Id: If1e9d6aa20351cb689d7f462bdae9f6fe6f01811 --- .../include/sec_comp_client.h | 2 +- .../src/sec_comp_client.cpp | 12 ++-- .../sa/sa_main/first_use_dialog.cpp | 6 +- .../sa/sa_main/sec_comp_entity.cpp | 65 +------------------ .../sa/sa_main/sec_comp_service.cpp | 5 ++ .../include/application_state_observer_stub.h | 2 +- .../unittest/src/first_use_dialog_test.cpp | 8 +-- .../BUILD.gn | 1 - .../verifysavepermission_fuzzer/BUILD.gn | 1 - 9 files changed, 23 insertions(+), 79 deletions(-) diff --git a/frameworks/inner_api/security_component/include/sec_comp_client.h b/frameworks/inner_api/security_component/include/sec_comp_client.h index 028c493..d85c8f5 100644 --- a/frameworks/inner_api/security_component/include/sec_comp_client.h +++ b/frameworks/inner_api/security_component/include/sec_comp_client.h @@ -75,7 +75,7 @@ private: bool readyFlag_ = false; std::condition_variable secComCon_; std::mutex proxyMutex_; - bool secCompSAFlag_ = false; + bool serviceAbilityNeedLoadFlag_ = false; std::condition_variable secCompSACon_; std::mutex secCompSaMutex_; sptr proxy_ = nullptr; diff --git a/frameworks/inner_api/security_component/src/sec_comp_client.cpp b/frameworks/inner_api/security_component/src/sec_comp_client.cpp index 42d39f7..d29334d 100644 --- a/frameworks/inner_api/security_component/src/sec_comp_client.cpp +++ b/frameworks/inner_api/security_component/src/sec_comp_client.cpp @@ -146,10 +146,12 @@ int32_t SecCompClient::RegisterSecurityComponent(SecCompType type, std::unique_lock lock(secCompSaMutex_); auto waitStatus = secCompSACon_.wait_for(lock, std::chrono::milliseconds(SA_DIED_TIME_OUT), - [this]() { return secCompSAFlag_; }); + [this]() { return serviceAbilityNeedLoadFlag_; }); if (waitStatus) { proxy = GetProxy(true); - return TryRegisterSecurityComponent(type, componentInfo, scId, proxy); + if (proxy != nullptr) { + return TryRegisterSecurityComponent(type, componentInfo, scId, proxy); + } } return res; } @@ -177,7 +179,7 @@ int32_t SecCompClient::UpdateSecurityComponent(int32_t scId, const std::string& { auto proxy = GetProxy(true); if (proxy == nullptr) { - SC_LOG_ERROR(LABEL, "Proxy is null"); + SC_LOG_ERROR(LABEL, "Proxy is null."); return SC_SERVICE_ERROR_VALUE_INVALID; } @@ -493,7 +495,7 @@ void SecCompClient::FinishStartSASuccess(const sptr& remoteObject } { std::unique_lock lock(secCompSaMutex_); - secCompSAFlag_ = false; + serviceAbilityNeedLoadFlag_ = false; } } @@ -532,7 +534,7 @@ void SecCompClient::OnRemoteDiedHandle() } { std::unique_lock lock1(secCompSaMutex_); - secCompSAFlag_ = true; + serviceAbilityNeedLoadFlag_ = true; secCompSACon_.notify_one(); } } diff --git a/services/security_component_service/sa/sa_main/first_use_dialog.cpp b/services/security_component_service/sa/sa_main/first_use_dialog.cpp index dcf82bc..597a96a 100644 --- a/services/security_component_service/sa/sa_main/first_use_dialog.cpp +++ b/services/security_component_service/sa/sa_main/first_use_dialog.cpp @@ -82,12 +82,12 @@ bool ReportUserData(const std::string& filePath, const std::string& folderPath) } int64_t fileSize = fileInfo.st_size; - struct statfs stat; - if (statfs(folderPath.c_str(), &stat) != 0) { + struct statfs statsInfo; + if (statfs(folderPath.c_str(), &statsInfo) != 0) { SC_LOG_ERROR(LABEL, "Failed to get data remain size."); return false; } - uint64_t remainSize = static_cast(stat.f_bfree) * stat.f_bsize; + uint64_t remainSize = static_cast(statsInfo.f_bfree) * statsInfo.f_bsize; HiSysEventWrite(HiviewDFX::HiSysEvent::Domain::FILEMANAGEMENT, "USER_DATA_SIZE", HiviewDFX::HiSysEvent::EventType::STATISTIC, "COMPONENT_NAME", SECURITY_COMPONENT_MANAGER, diff --git a/services/security_component_service/sa/sa_main/sec_comp_entity.cpp b/services/security_component_service/sa/sa_main/sec_comp_entity.cpp index b6d7b3f..293c87e 100644 --- a/services/security_component_service/sa/sa_main/sec_comp_entity.cpp +++ b/services/security_component_service/sa/sa_main/sec_comp_entity.cpp @@ -35,17 +35,6 @@ constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, SECURITY_DOMAIN_SECURIT static constexpr uint64_t MAX_TOUCH_INTERVAL = 1000000L; // 1000ms static constexpr uint64_t TIME_CONVERSION_UNIT = 1000; static constexpr uint32_t FOLD_VIRTUAL_DISPLAY_ID = 999; -constexpr const char *SETTINGS_DATA_EXT_URI = "datashare:///com.ohos.settingsdata.DataAbility"; -constexpr const char *SETTINGS_DATASHARE_URI = - "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true"; -constexpr const char *SETTINGS_DATASHARE_SEARCH_URI = - "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?" \ - "Proxy=true&key=accessibility_screenreader_enabled"; -constexpr const char *ADVANCED_DATA_COLUMN_KEYWORD = "KEYWORD"; -constexpr const char *ADVANCED_DATA_COLUMN_VALUE = "VALUE"; -constexpr const char *QUERY_KEYWORD = "accessibility_screenreader_enabled"; -constexpr int32_t SA_ID_SECURITY_COMPONENT_SERVICE = 3506; -static bool IsScreenReadMode(); } int32_t SecCompEntity::GrantTempPermission() @@ -140,10 +129,9 @@ int32_t SecCompEntity::CheckClickInfo(SecCompClickEvent& clickInfo, int32_t supe } int32_t res = SC_SERVICE_ERROR_CLICK_EVENT_INVALID; - bool isScreenReadMode = IsScreenReadMode(); - if (clickInfo.type == ClickEventType::POINT_EVENT_TYPE && !isScreenReadMode) { + if (clickInfo.type == ClickEventType::POINT_EVENT_TYPE) { res = CheckPointEvent(clickInfo, superFoldOffsetY, crossAxisState); - } else if (clickInfo.type == ClickEventType::ACCESSIBILITY_EVENT_TYPE && isScreenReadMode) { + } else if (clickInfo.type == ClickEventType::ACCESSIBILITY_EVENT_TYPE) { SC_LOG_WARN(LABEL, "Device is in screen read mode."); res = SC_OK; } else if (clickInfo.type == ClickEventType::KEY_EVENT_TYPE) { @@ -172,55 +160,6 @@ int32_t SecCompEntity::CheckClickInfo(SecCompClickEvent& clickInfo, int32_t supe } return SC_OK; } - -namespace { -static bool IsScreenReadMode() -{ - auto saManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); - if (saManager == nullptr) { - SC_LOG_ERROR(LABEL, "Get sa manager is nullptr."); - return false; - } - auto remoteObj = saManager->GetSystemAbility(SA_ID_SECURITY_COMPONENT_SERVICE); - if (remoteObj == nullptr) { - SC_LOG_ERROR(LABEL, "Get remoteObj is nullptr."); - return false; - } - std::shared_ptr dataShareHelper = - DataShare::DataShareHelper::Creator(remoteObj, SETTINGS_DATASHARE_URI, SETTINGS_DATA_EXT_URI); - if (dataShareHelper == nullptr) { - SC_LOG_ERROR(LABEL, "Get dataShareHelper is nullptr."); - return false; - } - DataShare::DataSharePredicates predicates; - std::vector columns; - predicates.EqualTo(ADVANCED_DATA_COLUMN_KEYWORD, QUERY_KEYWORD); - OHOS::Uri uri(SETTINGS_DATASHARE_SEARCH_URI); - auto result = dataShareHelper->Query(uri, predicates, columns); - if (result == nullptr) { - SC_LOG_ERROR(LABEL, "Query result is nullptr."); - dataShareHelper->Release(); - return false; - } - if (result->GoToFirstRow() != DataShare::E_OK) { - SC_LOG_ERROR(LABEL, "Query failed, GoToFirstRow error."); - result->Close(); - dataShareHelper->Release(); - return false; - } - int32_t columnIndex; - if (result->GetColumnIndex(ADVANCED_DATA_COLUMN_VALUE, columnIndex) != DataShare::E_OK) { - return false; - } - std::string value; - if (result->GetString(columnIndex, value) != DataShare::E_OK) { - return false; - } - result->Close(); - dataShareHelper->Release(); - return value == "1"; -} -} } // namespace SecurityComponent } // namespace Security } // namespace OHOS diff --git a/services/security_component_service/sa/sa_main/sec_comp_service.cpp b/services/security_component_service/sa/sa_main/sec_comp_service.cpp index 5e0c020..eb64e8a 100644 --- a/services/security_component_service/sa/sa_main/sec_comp_service.cpp +++ b/services/security_component_service/sa/sa_main/sec_comp_service.cpp @@ -253,17 +253,22 @@ int32_t SecCompService::RegisterSecurityComponentBody(SecCompType type, int32_t res = SecCompManager::GetInstance().RegisterSecurityComponent(type, jsonRes, caller, scId); FinishTrace(HITRACE_TAG_ACCESS_CONTROL); + if (res != SC_OK) { + return res; + } int32_t uid = IPCSkeleton::GetCallingUid(); OHOS::AppExecFwk::BundleMgrClient bmsClient; std::string bundleName = ""; if (bmsClient.GetNameForUid(uid, bundleName) != SC_OK) { + SC_LOG_ERROR(LABEL, "Failed to get bundle name for UID %{public}d", uid); return res; } AppExecFwk::BundleInfo bundleInfo; int32_t userId = uid / BASE_USER_RANGE; if (bmsClient.GetBundleInfo(bundleName, AppExecFwk::BundleFlag::GET_BUNDLE_DEFAULT, bundleInfo, userId) != SC_OK) { + SC_LOG_ERROR(LABEL, "Failed to get bundle info for bundle name %{public}s", bundleName.c_str()); return res; } diff --git a/services/security_component_service/sa/test/mock/include/application_state_observer_stub.h b/services/security_component_service/sa/test/mock/include/application_state_observer_stub.h index 35c9890..aefcb3d 100644 --- a/services/security_component_service/sa/test/mock/include/application_state_observer_stub.h +++ b/services/security_component_service/sa/test/mock/include/application_state_observer_stub.h @@ -60,7 +60,7 @@ public: DECLARE_INTERFACE_DESCRIPTOR(u"ohos.appexecfwk.IApplicationStateObserver"); virtual void OnProcessStateChanged(const ProcessData &processData) {} virtual void OnProcessDied(const ProcessData &processData) = 0; - virtual void OnAppCacheStateChanged(const AppExecFwk::AppStateData &appStateData) = 0; + virtual void OnAppCacheStateChanged(const AppStateData &appStateData) = 0; }; class ApplicationStateObserverStub : public IRemoteStub { diff --git a/services/security_component_service/sa/test/unittest/src/first_use_dialog_test.cpp b/services/security_component_service/sa/test/unittest/src/first_use_dialog_test.cpp index 260b40e..9c1d12e 100644 --- a/services/security_component_service/sa/test/unittest/src/first_use_dialog_test.cpp +++ b/services/security_component_service/sa/test/unittest/src/first_use_dialog_test.cpp @@ -34,7 +34,7 @@ static const std::string SEC_COMP_SRV_CFG_PATH = "/data/service/el1/public/secur static const std::string SEC_COMP_SRV_CFG_FILE = SEC_COMP_SRV_CFG_PATH + "/" + "first_use_record.json"; static const std::string SEC_COMP_SRV_CFG_BACK_FILE = SEC_COMP_SRV_CFG_PATH + "/" + "first_use_record.json.bak"; static const std::string INVALID_PATH = "/invalid_path"; -static const char* DATA_FOLDER = "/data"; +static const std::string DATA_FOLDER = "/data"; constexpr uint64_t LOCATION_BUTTON_FIRST_USE = 1 << 0; constexpr uint64_t SAVE_BUTTON_FIRST_USE = 1 << 1; } @@ -96,9 +96,9 @@ HWTEST_F(FirstUseDialogTest, ReportUserData001, TestSize.Level0) FirstUseDialog diag; diag.firstUseMap_[1] = 1; diag.SaveFirstUseRecord(); - EXPECT_EQ(true, ReportUserData(SEC_COMP_SRV_CFG_FILE, DATA_FOLDER)); - EXPECT_EQ(false, ReportUserData(INVALID_PATH, DATA_FOLDER)); - EXPECT_EQ(false, ReportUserData(SEC_COMP_SRV_CFG_FILE, INVALID_PATH)); + ASSERT_EQ(true, ReportUserData(SEC_COMP_SRV_CFG_FILE, DATA_FOLDER)); + ASSERT_EQ(false, ReportUserData(INVALID_PATH, DATA_FOLDER)); + ASSERT_EQ(false, ReportUserData(SEC_COMP_SRV_CFG_FILE, INVALID_PATH)); } /** diff --git a/test/fuzztest/security_component/innerkits/unregistersecuritycomponent_fuzzer/BUILD.gn b/test/fuzztest/security_component/innerkits/unregistersecuritycomponent_fuzzer/BUILD.gn index 2a09083..06e29a9 100644 --- a/test/fuzztest/security_component/innerkits/unregistersecuritycomponent_fuzzer/BUILD.gn +++ b/test/fuzztest/security_component/innerkits/unregistersecuritycomponent_fuzzer/BUILD.gn @@ -47,7 +47,6 @@ ohos_fuzztest("UnregisterSecurityComponentFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "hilog:libhilog", - "json:nlohmann_json_static", "window_manager:libdm", ] } diff --git a/test/fuzztest/security_component/innerkits/verifysavepermission_fuzzer/BUILD.gn b/test/fuzztest/security_component/innerkits/verifysavepermission_fuzzer/BUILD.gn index 6fa6668..958670d 100644 --- a/test/fuzztest/security_component/innerkits/verifysavepermission_fuzzer/BUILD.gn +++ b/test/fuzztest/security_component/innerkits/verifysavepermission_fuzzer/BUILD.gn @@ -48,7 +48,6 @@ ohos_fuzztest("VerifySavePermissionFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "hilog:libhilog", - "json:nlohmann_json_static", "window_manager:libdm", ] } -- Gitee