From 8fefdaa41e1b7a757f867c3ee5f662db3a3e041c Mon Sep 17 00:00:00 2001 From: l60055366 Date: Fri, 22 Nov 2024 10:27:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A4=84=E7=90=86foundation/distributedhar?= =?UTF-8?q?dware/device=5Fmanager=E6=A8=A1=E5=9D=97=E7=9A=84=E5=91=8A?= =?UTF-8?q?=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: l60055366 --- common/src/ipc/lite/ipc_cmd_register.cpp | 4 ++++ ext/pin_auth/src/ability/standard/dm_ability_manager.cpp | 6 +++++- interfaces/kits/js/src/native_devicemanager_js.cpp | 4 ---- interfaces/kits/js4.0/src/dm_native_util.cpp | 8 +++++++- .../implementation/src/authentication/dm_auth_manager.cpp | 5 ++++- services/service/src/device_manager_service.cpp | 4 ++++ services/service/src/ipc/lite/ipc_server_listener.cpp | 4 ++++ services/service/src/ipc/standard/ipc_server_listener.cpp | 2 +- services/softbuscache/src/dm_softbus_cache.cpp | 5 +++-- 9 files changed, 32 insertions(+), 10 deletions(-) diff --git a/common/src/ipc/lite/ipc_cmd_register.cpp b/common/src/ipc/lite/ipc_cmd_register.cpp index 434c7f3dc..933ab010a 100644 --- a/common/src/ipc/lite/ipc_cmd_register.cpp +++ b/common/src/ipc/lite/ipc_cmd_register.cpp @@ -26,6 +26,10 @@ DM_IMPLEMENT_SINGLE_INSTANCE(IpcCmdRegister); int32_t IpcCmdRegister::SetRequest(int32_t cmdCode, std::shared_ptr pBaseReq, IpcIo &request, uint8_t *buffer, size_t buffLen) { + if (pBaseReq == nullptr) { + LOGE("IpcCmdRegister::SetRequest pBaseReq is nullptr!"); + return ERR_DM_POINT_NULL; + } if (cmdCode < 0 || cmdCode >= IPC_MSG_BUTT) { LOGE("IpcCmdRegister::SetRequest cmdCode param invalid!"); return ERR_DM_UNSUPPORTED_IPC_COMMAND; diff --git a/ext/pin_auth/src/ability/standard/dm_ability_manager.cpp b/ext/pin_auth/src/ability/standard/dm_ability_manager.cpp index 82852b6d1..3beb339fd 100644 --- a/ext/pin_auth/src/ability/standard/dm_ability_manager.cpp +++ b/ext/pin_auth/src/ability/standard/dm_ability_manager.cpp @@ -23,7 +23,11 @@ namespace OHOS { namespace DistributedHardware { AbilityStatus DmAbilityManager::StartAbility(AAFwk::Want &want) { - AAFwk::AbilityManagerClient::GetInstance()->Connect(); + ErrCode ret = AAFwk::AbilityManagerClient::GetInstance()->Connect(); + if (ret != 0) { + LOGE("Connect Ability failed, error value = %{public}d", (int32_t)ret); + return AbilityStatus::ABILITY_STATUS_FAILED; + } ErrCode result = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want); if (result != 0) { LOGE("Start Ability failed, error value = %{public}d", (int32_t)result); diff --git a/interfaces/kits/js/src/native_devicemanager_js.cpp b/interfaces/kits/js/src/native_devicemanager_js.cpp index e0f90c5ce..75e70c7a7 100644 --- a/interfaces/kits/js/src/native_devicemanager_js.cpp +++ b/interfaces/kits/js/src/native_devicemanager_js.cpp @@ -620,7 +620,6 @@ void DmNapiPublishCallback::OnPublishResult(int32_t publishId, int32_t publishRe deviceManagerNapi->OnPublishResult(callback->publishId_, callback->reason_); } delete callback; - callback = nullptr; DeleteUvWork(work); }, uv_qos_user_initiated); if (ret != 0) { @@ -679,7 +678,6 @@ void DmNapiAuthenticateCallback::OnAuthResult(const std::string &deviceId, const callback->status_, callback->reason_); } delete callback; - callback = nullptr; DeleteUvWork(work); }, uv_qos_user_initiated); if (ret != 0) { @@ -723,7 +721,6 @@ void DmNapiCredentialCallback::OnCredentialResult(int32_t &action, const std::st deviceManagerNapi->OnCredentialResult(callback->action_, callback->credentialResult_); } delete callback; - callback = nullptr; delete work; work = nullptr; }, uv_qos_user_initiated); @@ -1604,7 +1601,6 @@ void DmNapiDeviceManagerUiCallback::OnCall(const std::string ¶mJson) deviceManagerNapi->OnDmUiCall(callback->token_); } delete callback; - callback = nullptr; DeleteUvWork(work); }, uv_qos_user_initiated); if (ret != 0) { diff --git a/interfaces/kits/js4.0/src/dm_native_util.cpp b/interfaces/kits/js4.0/src/dm_native_util.cpp index 8632ba7e1..43be4b8fa 100644 --- a/interfaces/kits/js4.0/src/dm_native_util.cpp +++ b/interfaces/kits/js4.0/src/dm_native_util.cpp @@ -44,6 +44,9 @@ const int32_t DM_NAPI_BUF_LENGTH = 256; void JsObjectToString(const napi_env &env, const napi_value &object, const std::string &fieldStr, char *dest, const int32_t destLen) { + if (dest == nullptr) { + return; + } bool hasProperty = false; NAPI_CALL_RETURN_VOID(env, napi_has_named_property(env, object, fieldStr.c_str(), &hasProperty)); if (hasProperty) { @@ -449,7 +452,10 @@ bool JsToStringAndCheck(napi_env env, napi_value value, const std::string &value return false; } char temp[DM_NAPI_BUF_LENGTH] = {0}; - napi_get_value_string_utf8(env, value, temp, valueLen + 1, &valueLen); + napi_status status = napi_get_value_string_utf8(env, value, temp, valueLen + 1, &valueLen); + if (status != napi_ok) { + return false; + } strValue = temp; return true; } diff --git a/services/implementation/src/authentication/dm_auth_manager.cpp b/services/implementation/src/authentication/dm_auth_manager.cpp index a1d3c0dfa..8683a6485 100644 --- a/services/implementation/src/authentication/dm_auth_manager.cpp +++ b/services/implementation/src/authentication/dm_auth_manager.cpp @@ -240,7 +240,10 @@ void DmAuthManager::GetAuthParam(const std::string &pkgName, int32_t authType, void DmAuthManager::InitAuthState(const std::string &pkgName, int32_t authType, const std::string &deviceId, const std::string &extra) { - authPtr_ = authenticationMap_[authType]; + if (authenticationMap_.find(authType) != authenticationMap_.end()) { + authPtr_ = authenticationMap_[authType]; + } + if (timer_ == nullptr) { timer_ = std::make_shared(); } diff --git a/services/service/src/device_manager_service.cpp b/services/service/src/device_manager_service.cpp index 4ede94b80..d48321aaa 100755 --- a/services/service/src/device_manager_service.cpp +++ b/services/service/src/device_manager_service.cpp @@ -264,6 +264,7 @@ int32_t DeviceManagerService::GetTrustedDeviceList(const std::string &pkgName, c DmDeviceInfo tempInfo; if (memcpy_s(tempInfo.networkId, DM_MAX_DEVICE_ID_LEN, item.networkId, sizeof(item.networkId)) != 0) { LOGE("get networkId: %{public}s failed", GetAnonyString(item.networkId).c_str()); + continue; } deviceList.push_back(tempInfo); } @@ -353,6 +354,7 @@ int32_t DeviceManagerService::GetLocalDeviceInfo(DmDeviceInfo &info) DmDeviceInfo tempInfo; if (memcpy_s(tempInfo.networkId, DM_MAX_DEVICE_ID_LEN, info.networkId, sizeof(info.networkId)) != 0) { LOGE("get networkId: %{public}s failed", GetAnonyString(info.networkId).c_str()); + return ERR_DM_FAILED; } info = tempInfo; return DM_OK; @@ -381,6 +383,7 @@ int32_t DeviceManagerService::GetLocalDeviceInfo(DmDeviceInfo &info) #endif if (memcpy_s(info.deviceId, DM_MAX_DEVICE_ID_LEN, localDeviceId_.c_str(), localDeviceId_.length()) != 0) { LOGE("get deviceId: %{public}s failed", GetAnonyString(localDeviceId_).c_str()); + return ERR_DM_FAILED; } return DM_OK; } @@ -1910,6 +1913,7 @@ void DeviceManagerService::ConvertUdidHashToAnoyDeviceId(DmDeviceInfo &deviceInf } if (memcpy_s(deviceInfo.deviceId, DM_MAX_DEVICE_ID_LEN, udidHashTemp.c_str(), udidHashTemp.length()) != 0) { LOGE("get deviceId: %{public}s failed", GetAnonyString(udidHashTemp).c_str()); + return; } } } diff --git a/services/service/src/ipc/lite/ipc_server_listener.cpp b/services/service/src/ipc/lite/ipc_server_listener.cpp index 912b538ae..249b705d0 100644 --- a/services/service/src/ipc/lite/ipc_server_listener.cpp +++ b/services/service/src/ipc/lite/ipc_server_listener.cpp @@ -43,6 +43,10 @@ int32_t IpcServerListener::GetIdentityByPkgName(std::string &name, SvcIdentity * int32_t IpcServerListener::SendRequest(int32_t cmdCode, std::shared_ptr req, std::shared_ptr rsp) { + if (req == nullptr || rsp == nullptr) { + LOGE("SendRequest req or rsp is nullptr."); + return ERR_DM_POINT_NULL; + } std::string pkgName = req->GetPkgName(); SvcIdentity svc; if (GetIdentityByPkgName(pkgName, &svc) != DM_OK) { diff --git a/services/service/src/ipc/standard/ipc_server_listener.cpp b/services/service/src/ipc/standard/ipc_server_listener.cpp index 9c9cec34a..04ba46250 100644 --- a/services/service/src/ipc/standard/ipc_server_listener.cpp +++ b/services/service/src/ipc/standard/ipc_server_listener.cpp @@ -24,7 +24,7 @@ namespace OHOS { namespace DistributedHardware { int32_t IpcServerListener::SendRequest(int32_t cmdCode, std::shared_ptr req, std::shared_ptr rsp) { - if (rsp == nullptr) { + if (rsp == nullptr || req == nullptr) { return ERR_DM_INPUT_PARA_INVALID; } if (cmdCode < 0 || cmdCode >= IPC_MSG_BUTT) { diff --git a/services/softbuscache/src/dm_softbus_cache.cpp b/services/softbuscache/src/dm_softbus_cache.cpp index 0e0734bec..097f7ed6e 100644 --- a/services/softbuscache/src/dm_softbus_cache.cpp +++ b/services/softbuscache/src/dm_softbus_cache.cpp @@ -19,11 +19,12 @@ #include "dm_constants.h" #include "dm_device_info.h" #include "dm_log.h" +#include namespace OHOS { namespace DistributedHardware { DM_IMPLEMENT_SINGLE_INSTANCE(SoftbusCache); -bool g_online = false; -bool g_getLocalDevInfo = false; +std::atomic g_online; +std::atomic g_getLocalDevInfo; DmDeviceInfo localDeviceInfo_; std::mutex localDevInfoMutex_; void SoftbusCache::SaveLocalDeviceInfo() -- Gitee From 036743380c4cc6c1def3e6be2456cf03b2fa7b83 Mon Sep 17 00:00:00 2001 From: l60055366 Date: Fri, 22 Nov 2024 17:07:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A4=84=E7=90=86foundation/distributedhar?= =?UTF-8?q?dware/device=5Fmanager=E6=A8=A1=E5=9D=97fuzz=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E7=9A=84=E5=91=8A=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: l60055366 --- test/commonfuzztest/onerror_fuzzer/on_error_fuzzer.cpp | 3 +-- test/commonfuzztest/onfinish_fuzzer/on_finish_fuzzer.cpp | 3 +-- test/commonfuzztest/onrequest_fuzzer/on_request_fuzzer.cpp | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/test/commonfuzztest/onerror_fuzzer/on_error_fuzzer.cpp b/test/commonfuzztest/onerror_fuzzer/on_error_fuzzer.cpp index ea8c7f86a..97e88fa08 100644 --- a/test/commonfuzztest/onerror_fuzzer/on_error_fuzzer.cpp +++ b/test/commonfuzztest/onerror_fuzzer/on_error_fuzzer.cpp @@ -63,8 +63,7 @@ void OnErrorFuzzTest(const uint8_t* data, size_t size) hichainConnector->RegisterHiChainCallback(std::make_shared()); int64_t requestId = *(reinterpret_cast(data)); - std::random_device rd; - int operationCode = static_cast(rd() % 6); + int operationCode = *(reinterpret_cast(data)); int errorCode = *(reinterpret_cast(data)); std::string str(reinterpret_cast(data), size); const char *returnData = str.data(); diff --git a/test/commonfuzztest/onfinish_fuzzer/on_finish_fuzzer.cpp b/test/commonfuzztest/onfinish_fuzzer/on_finish_fuzzer.cpp index 196069acc..3a852c03f 100644 --- a/test/commonfuzztest/onfinish_fuzzer/on_finish_fuzzer.cpp +++ b/test/commonfuzztest/onfinish_fuzzer/on_finish_fuzzer.cpp @@ -63,8 +63,7 @@ void OnFinishFuzzTest(const uint8_t* data, size_t size) hichainConnector->RegisterHiChainCallback(std::make_shared()); int64_t requestId = *(reinterpret_cast(data)); - std::random_device rd; - int operationCode = static_cast(rd() % 6); + int operationCode = *(reinterpret_cast(data)); std::string str(reinterpret_cast(data), size); const char *returnData = str.data(); hichainConnector->onFinish(requestId, operationCode, returnData); diff --git a/test/commonfuzztest/onrequest_fuzzer/on_request_fuzzer.cpp b/test/commonfuzztest/onrequest_fuzzer/on_request_fuzzer.cpp index d3b7df0b7..d27fd5e0e 100644 --- a/test/commonfuzztest/onrequest_fuzzer/on_request_fuzzer.cpp +++ b/test/commonfuzztest/onrequest_fuzzer/on_request_fuzzer.cpp @@ -59,8 +59,7 @@ void OnRequestFuzzTest(const uint8_t* data, size_t size) } int64_t requestId = *(reinterpret_cast(data)); - std::random_device rd; - int operationCode = static_cast(rd() % 6); + int operationCode = *(reinterpret_cast(data)); const char *reqParams = reinterpret_cast(data); std::shared_ptr hichainConnector = std::make_shared(); -- Gitee