From 530c11606679528e2694ba17a84d5bfc74321641 Mon Sep 17 00:00:00 2001 From: bailu1992 Date: Thu, 24 Apr 2025 21:29:37 +0800 Subject: [PATCH] Server-side interface fuzz coverage Signed-off-by: bailu1992 --- .../getdelaytimestub_fuzzer.cpp | 26 ++++++++++++------ .../getlightliststub_fuzzer.cpp | 26 ++++++++++++------ .../getvibratorcapacitystub_fuzzer.cpp | 26 ++++++++++++------ .../issupporteffectstub_fuzzer.cpp | 27 +++++++++++++------ 4 files changed, 73 insertions(+), 32 deletions(-) diff --git a/test/fuzztest/service/getdelaytimestub_fuzzer/getdelaytimestub_fuzzer.cpp b/test/fuzztest/service/getdelaytimestub_fuzzer/getdelaytimestub_fuzzer.cpp index 46f4966..34faf6d 100644 --- a/test/fuzztest/service/getdelaytimestub_fuzzer/getdelaytimestub_fuzzer.cpp +++ b/test/fuzztest/service/getdelaytimestub_fuzzer/getdelaytimestub_fuzzer.cpp @@ -36,6 +36,20 @@ auto g_service = MiscdeviceDelayedSpSingleton::GetInstance(); const std::u16string VIBRATOR_INTERFACE_TOKEN = u"IMiscdeviceService"; } // namespace +template +size_t GetObject(const uint8_t *data, size_t size, T &object) +{ + size_t objectSize = sizeof(object); + if (objectSize > size) { + return 0; + } + errno_t ret = memcpy_s(&object, objectSize, data, objectSize); + if (ret != EOK) { + return 0; + } + return objectSize; +} + void SetUpTestCase() { const char **perms = new (std::nothrow) const char *[1]; @@ -62,15 +76,11 @@ void SetUpTestCase() bool OnRemoteRequestFuzzTest(const uint8_t *data, size_t size) { SetUpTestCase(); - MessageParcel datas; - datas.WriteInterfaceToken(VIBRATOR_INTERFACE_TOKEN); - datas.WriteBuffer(data, size); - datas.RewindRead(0); - MessageParcel reply; - MessageOption option; g_service->OnStartFuzz(); - g_service->OnRemoteRequest(static_cast(IMiscdeviceServiceIpcCode::COMMAND_GET_DELAY_TIME), - datas, reply, option); + size_t startPos = 0; + int32_t delayTime; + GetObject(data + startPos, size - startPos, delayTime); + g_service->GetDelayTime(delayTime); return true; } } // namespace Sensors diff --git a/test/fuzztest/service/getlightliststub_fuzzer/getlightliststub_fuzzer.cpp b/test/fuzztest/service/getlightliststub_fuzzer/getlightliststub_fuzzer.cpp index ed0f00d..dae34e4 100644 --- a/test/fuzztest/service/getlightliststub_fuzzer/getlightliststub_fuzzer.cpp +++ b/test/fuzztest/service/getlightliststub_fuzzer/getlightliststub_fuzzer.cpp @@ -36,6 +36,20 @@ auto g_service = MiscdeviceDelayedSpSingleton::GetInstance(); const std::u16string VIBRATOR_INTERFACE_TOKEN = u"IMiscdeviceService"; } // namespace +template +size_t GetObject(const uint8_t *data, size_t size, T &object) +{ + size_t objectSize = sizeof(object); + if (objectSize > size) { + return 0; + } + errno_t ret = memcpy_s(&object, objectSize, data, objectSize); + if (ret != EOK) { + return 0; + } + return objectSize; +} + void SetUpTestCase() { const char **perms = new (std::nothrow) const char *[1]; @@ -62,15 +76,11 @@ void SetUpTestCase() bool OnRemoteRequestFuzzTest(const uint8_t *data, size_t size) { SetUpTestCase(); - MessageParcel datas; - datas.WriteInterfaceToken(VIBRATOR_INTERFACE_TOKEN); - datas.WriteBuffer(data, size); - datas.RewindRead(0); - MessageParcel reply; - MessageOption option; g_service->OnStartFuzz(); - g_service->OnRemoteRequest(static_cast(IMiscdeviceServiceIpcCode::COMMAND_GET_LIGHT_LIST), - datas, reply, option); + size_t startPos = 0; + std::vector lightInfoIpcList; + GetObject(data + startPos, size - startPos, lightInfoIpcList[0]); + g_service->GetLightList(lightInfoIpcList); return true; } } // namespace Sensors diff --git a/test/fuzztest/service/getvibratorcapacitystub_fuzzer/getvibratorcapacitystub_fuzzer.cpp b/test/fuzztest/service/getvibratorcapacitystub_fuzzer/getvibratorcapacitystub_fuzzer.cpp index a1ac5a1..4f64fac 100644 --- a/test/fuzztest/service/getvibratorcapacitystub_fuzzer/getvibratorcapacitystub_fuzzer.cpp +++ b/test/fuzztest/service/getvibratorcapacitystub_fuzzer/getvibratorcapacitystub_fuzzer.cpp @@ -36,6 +36,20 @@ auto g_service = MiscdeviceDelayedSpSingleton::GetInstance(); const std::u16string VIBRATOR_INTERFACE_TOKEN = u"IMiscdeviceService"; } // namespace +template +size_t GetObject(const uint8_t *data, size_t size, T &object) +{ + size_t objectSize = sizeof(object); + if (objectSize > size) { + return 0; + } + errno_t ret = memcpy_s(&object, objectSize, data, objectSize); + if (ret != EOK) { + return 0; + } + return objectSize; +} + void SetUpTestCase() { const char **perms = new (std::nothrow) const char *[1]; @@ -62,15 +76,11 @@ void SetUpTestCase() bool OnRemoteRequestFuzzTest(const uint8_t *data, size_t size) { SetUpTestCase(); - MessageParcel datas; - datas.WriteInterfaceToken(VIBRATOR_INTERFACE_TOKEN); - datas.WriteBuffer(data, size); - datas.RewindRead(0); - MessageParcel reply; - MessageOption option; g_service->OnStartFuzz(); - g_service->OnRemoteRequest(static_cast(IMiscdeviceServiceIpcCode::COMMAND_GET_VIBRATOR_CAPACITY), - datas, reply, option); + size_t startPos = 0; + VibratorCapacity capacity; + GetObject(data + startPos, size - startPos, capacity.isSupportHdHaptic); + g_service->GetVibratorCapacity(capacity); return true; } } // namespace Sensors diff --git a/test/fuzztest/service/issupporteffectstub_fuzzer/issupporteffectstub_fuzzer.cpp b/test/fuzztest/service/issupporteffectstub_fuzzer/issupporteffectstub_fuzzer.cpp index a6a8957..85550c4 100644 --- a/test/fuzztest/service/issupporteffectstub_fuzzer/issupporteffectstub_fuzzer.cpp +++ b/test/fuzztest/service/issupporteffectstub_fuzzer/issupporteffectstub_fuzzer.cpp @@ -36,6 +36,20 @@ auto g_service = MiscdeviceDelayedSpSingleton::GetInstance(); const std::u16string VIBRATOR_INTERFACE_TOKEN = u"IMiscdeviceService"; } // namespace +template +size_t GetObject(const uint8_t *data, size_t size, T &object) +{ + size_t objectSize = sizeof(object); + if (objectSize > size) { + return 0; + } + errno_t ret = memcpy_s(&object, objectSize, data, objectSize); + if (ret != EOK) { + return 0; + } + return objectSize; +} + void SetUpTestCase() { const char **perms = new (std::nothrow) const char *[1]; @@ -62,15 +76,12 @@ void SetUpTestCase() bool OnRemoteRequestFuzzTest(const uint8_t *data, size_t size) { SetUpTestCase(); - MessageParcel datas; - datas.WriteInterfaceToken(VIBRATOR_INTERFACE_TOKEN); - datas.WriteBuffer(data, size); - datas.RewindRead(0); - MessageParcel reply; - MessageOption option; g_service->OnStartFuzz(); - g_service->OnRemoteRequest(static_cast(IMiscdeviceServiceIpcCode::COMMAND_IS_SUPPORT_EFFECT), - datas, reply, option); + size_t startPos = 0; + std::string effect = ""; + bool state = false; + GetObject(data + startPos, size - startPos, state); + g_service->IsSupportEffect(effect, state); return true; } } // namespace Sensors -- Gitee