diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_stub.cpp b/services/distributeddataservice/service/kvdb/kvdb_service_stub.cpp index 8894c4ade4fe5e128e70afde19bc187e52100bf0..1da51ce462fb7232c9cd535dba3ad376547de188 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_stub.cpp +++ b/services/distributeddataservice/service/kvdb/kvdb_service_stub.cpp @@ -23,7 +23,8 @@ #include "utils/anonymous.h" namespace OHOS::DistributedKv { using namespace OHOS::DistributedData; -const KVDBServiceStub::Handler KVDBServiceStub::HANDLERS[TRANS_BUTT] = { +const KVDBServiceStub::Handler + KVDBServiceStub::HANDLERS[static_cast(KVDBServiceInterfaceCode::TRANS_BUTT)] = { &KVDBServiceStub::OnGetStoreIds, &KVDBServiceStub::OnBeforeCreate, &KVDBServiceStub::OnAfterCreate, @@ -53,8 +54,10 @@ int KVDBServiceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, Message return -1; } - if (TRANS_HEAD > code || code >= TRANS_BUTT || HANDLERS[code] == nullptr) { - ZLOGE("not support code:%{public}u, BUTT:%{public}d", code, TRANS_BUTT); + if (static_cast(KVDBServiceInterfaceCode::TRANS_HEAD) > code || + code >= static_cast(KVDBServiceInterfaceCode::TRANS_BUTT) || HANDLERS[code] == nullptr) { + ZLOGE("not support code:%{public}u, BUTT:%{public}d", code, + static_cast(KVDBServiceInterfaceCode::TRANS_BUTT)); return -1; } diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_stub.h b/services/distributeddataservice/service/kvdb/kvdb_service_stub.h index ab0bacc494d2e6df8019b6a077d2e563102f7c99..00b1763def44b6c8f646ad4139525b3046e34129 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_stub.h +++ b/services/distributeddataservice/service/kvdb/kvdb_service_stub.h @@ -15,6 +15,7 @@ #ifndef OHOS_DISTRIBUTED_DATA_SERVICE_KVDB_SERVICE_STUB_H #define OHOS_DISTRIBUTED_DATA_SERVICE_KVDB_SERVICE_STUB_H +#include "distributeddata_kvdb_ipc_interface_code.h" #include "iremote_stub.h" #include "kvdb_service.h" #include "feature/feature_system.h" @@ -43,7 +44,7 @@ private: int32_t OnSubscribe(const AppId &appId, const StoreId &storeId, MessageParcel &data, MessageParcel &reply); int32_t OnUnsubscribe(const AppId &appId, const StoreId &storeId, MessageParcel &data, MessageParcel &reply); int32_t OnGetBackupPassword(const AppId &appId, const StoreId &storeId, MessageParcel &data, MessageParcel &reply); - static const Handler HANDLERS[TRANS_BUTT]; + static const Handler HANDLERS[static_cast(KVDBServiceInterfaceCode::TRANS_BUTT)]; }; } // namespace OHOS::DistributedKv #endif // OHOS_DISTRIBUTED_DATA_SERVICE_KVDB_SERVICE_STUB_H diff --git a/services/distributeddataservice/service/test/fuzztest/udmfservice_fuzzer/BUILD.gn b/services/distributeddataservice/service/test/fuzztest/udmfservice_fuzzer/BUILD.gn index 30a813999ea87d65ed32557b3d8b22f4f1ab06ca..92b49df75ba4e7198f70e0f446af83ffdd20c3d4 100644 --- a/services/distributeddataservice/service/test/fuzztest/udmfservice_fuzzer/BUILD.gn +++ b/services/distributeddataservice/service/test/fuzztest/udmfservice_fuzzer/BUILD.gn @@ -44,7 +44,10 @@ ohos_fuzztest("UdmfServiceFuzzTest") { sources = [ "udmfservice_fuzzer.cpp" ] - deps = [ "${data_service_path}/service/udmf:udmf_server" ] + deps = [ + "${data_service_path}/framework:distributeddatasvcfwk", + "${data_service_path}/service/udmf:udmf_server", + ] external_deps = [ "ability_base:zuri", diff --git a/services/distributeddataservice/service/udmf/udmf_service_stub.cpp b/services/distributeddataservice/service/udmf/udmf_service_stub.cpp index febb3a3d3c026398277c3b1088ba97727dec35d8..ca92a0fbf8bbe8b00517da6dc08765ee554508c1 100755 --- a/services/distributeddataservice/service/udmf/udmf_service_stub.cpp +++ b/services/distributeddataservice/service/udmf/udmf_service_stub.cpp @@ -27,23 +27,8 @@ namespace OHOS { namespace UDMF { -UdmfServiceStub::UdmfServiceStub() -{ - memberFuncMap_[static_cast(SET_DATA)] = &UdmfServiceStub::OnSetData; - memberFuncMap_[static_cast(GET_DATA)] = &UdmfServiceStub::OnGetData; - memberFuncMap_[static_cast(GET_BATCH_DATA)] = &UdmfServiceStub::OnGetBatchData; - memberFuncMap_[static_cast(UPDATE_DATA)] = &UdmfServiceStub::OnUpdateData; - memberFuncMap_[static_cast(DELETE_DATA)] = &UdmfServiceStub::OnDeleteData; - memberFuncMap_[static_cast(GET_SUMMARY)] = &UdmfServiceStub::OnGetSummary; - memberFuncMap_[static_cast(ADD_PRIVILEGE)] = &UdmfServiceStub::OnAddPrivilege; - memberFuncMap_[static_cast(SYNC)] = &UdmfServiceStub::OnSync; -} - -UdmfServiceStub::~UdmfServiceStub() -{ - memberFuncMap_.clear(); -} - +constexpr UdmfServiceStub::Handler + UdmfServiceStub::HANDLERS[static_cast(UdmfServiceInterfaceCode::CODE_BUTT)]; int UdmfServiceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply) { ZLOGI("start##code = %{public}u", code); @@ -53,18 +38,11 @@ int UdmfServiceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, Message ZLOGE("end##descriptor checked fail"); return -1; } - if (CODE_HEAD > code || code >= CODE_BUTT) { + if (static_cast(UdmfServiceInterfaceCode::CODE_HEAD) > code || + code >= static_cast(UdmfServiceInterfaceCode::CODE_BUTT)) { return -1; } - auto itFunc = memberFuncMap_.find(code); - if (itFunc != memberFuncMap_.end()) { - auto memberFunc = itFunc->second; - if (memberFunc != nullptr) { - return (this->*memberFunc)(data, reply); - } - } - ZLOGI("end##ret = -1"); - return -1; + return (this->*HANDLERS[code])(data, reply); } int32_t UdmfServiceStub::OnSetData(MessageParcel &data, MessageParcel &reply) diff --git a/services/distributeddataservice/service/udmf/udmf_service_stub.h b/services/distributeddataservice/service/udmf/udmf_service_stub.h index 9684d2ec976b9c49cbbb6fe8f349ab2ffa5b703c..d3a739999eff4280cb5d19a98be564dab15c4aa2 100755 --- a/services/distributeddataservice/service/udmf/udmf_service_stub.h +++ b/services/distributeddataservice/service/udmf/udmf_service_stub.h @@ -22,6 +22,7 @@ #include "feature/feature_system.h" #include "message_parcel.h" +#include "distributeddata_udmf_ipc_interface_code.h" #include "error_code.h" #include "udmf_service.h" @@ -32,8 +33,6 @@ namespace UDMF { */ class UdmfServiceStub : public UdmfService, public DistributedData::FeatureSystem::Feature { public: - UdmfServiceStub(); - virtual ~UdmfServiceStub() override; int OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply) override; private: @@ -52,8 +51,17 @@ private: const std::string WRITE_PERMISSION = "ohos.permission.WRITE_UDMF_DATA"; const std::string SYNC_PERMISSION = "ohos.permission.SYNC_UDMF_DATA"; - using UdmfServiceFunc = int32_t (UdmfServiceStub::*)(MessageParcel &data, MessageParcel &reply); - std::map memberFuncMap_; + using Handler = int32_t (UdmfServiceStub::*)(MessageParcel &data, MessageParcel &reply); + static constexpr Handler HANDLERS[static_cast(UdmfServiceInterfaceCode::CODE_BUTT)] = { + &UdmfServiceStub::OnSetData, + &UdmfServiceStub::OnGetData, + &UdmfServiceStub::OnGetBatchData, + &UdmfServiceStub::OnUpdateData, + &UdmfServiceStub::OnDeleteData, + &UdmfServiceStub::OnGetSummary, + &UdmfServiceStub::OnAddPrivilege, + &UdmfServiceStub::OnSync + }; }; } // namespace UDMF } // namespace OHOS