From 34beff195640186c30334a0f1689f77c654aa229 Mon Sep 17 00:00:00 2001 From: bailu1992 Date: Sun, 27 Apr 2025 17:48:05 +0800 Subject: [PATCH] Added fuzz test case interface coverage for sensor Signed-off-by: bailu1992 --- .../createdatachannelstub_fuzzer.cpp | 25 ++++----------- .../getactiveinfoliststub_fuzzer.cpp | 31 ++++++++++++++----- .../getallsensorsstub_fuzzer.cpp | 28 ++++++++++++----- .../resumesensorsstub_fuzzer.cpp | 28 ++++++++++++----- .../sensordisablestub_fuzzer.cpp | 13 +++----- .../sensorenablestub_fuzzer.cpp | 18 +++++------ .../suspendsensorsstub_fuzzer.cpp | 28 ++++++++++++----- 7 files changed, 102 insertions(+), 69 deletions(-) diff --git a/test/fuzztest/services/createdatachannelstub_fuzzer/createdatachannelstub_fuzzer.cpp b/test/fuzztest/services/createdatachannelstub_fuzzer/createdatachannelstub_fuzzer.cpp index a92cbe68..43bea080 100644 --- a/test/fuzztest/services/createdatachannelstub_fuzzer/createdatachannelstub_fuzzer.cpp +++ b/test/fuzztest/services/createdatachannelstub_fuzzer/createdatachannelstub_fuzzer.cpp @@ -79,28 +79,15 @@ size_t GetObject(T &object, const uint8_t *data, size_t size) bool OnRemoteRequestFuzzTest(const uint8_t *data, size_t size) { SetUpTestCase(); - MessageParcel datas; - int32_t fd = 0; - GetObject(fd, data, size); - datas.WriteInterfaceToken(SENSOR_INTERFACE_TOKEN); if (g_remote == nullptr || g_service == nullptr) { return false; } - datas.WriteRemoteObject(g_remote); - datas.RewindRead(0); - MessageParcel reply; - MessageOption option; - g_service->OnRemoteRequest(static_cast(ISensorServiceIpcCode::COMMAND_TRANSFER_DATA_CHANNEL), - datas, reply, option); - datas.RewindRead(0); - g_service->OnRemoteRequest(static_cast(ISensorServiceIpcCode::COMMAND_DESTROY_SENSOR_CHANNEL), - datas, reply, option); - datas.RewindRead(0); - g_service->OnRemoteRequest(static_cast(ISensorServiceIpcCode::COMMAND_CREATE_SOCKET_CHANNEL), - datas, reply, option); - datas.RewindRead(0); - g_service->OnRemoteRequest(static_cast(ISensorServiceIpcCode::COMMAND_DESTROY_SOCKET_CHANNEL), - datas, reply, option); + int32_t clientFd = 0; + GetObject(clientFd, data, size); + g_service->CreateSocketChannel(g_remote, clientFd); + g_service->DestroySocketChannel(g_remote); + g_service->TransferDataChannel(clientFd, g_remote); + g_service->DestroySensorChannel(g_remote); return true; } } // namespace Sensors diff --git a/test/fuzztest/services/getactiveinfoliststub_fuzzer/getactiveinfoliststub_fuzzer.cpp b/test/fuzztest/services/getactiveinfoliststub_fuzzer/getactiveinfoliststub_fuzzer.cpp index 2ad06c29..8cb7bac2 100644 --- a/test/fuzztest/services/getactiveinfoliststub_fuzzer/getactiveinfoliststub_fuzzer.cpp +++ b/test/fuzztest/services/getactiveinfoliststub_fuzzer/getactiveinfoliststub_fuzzer.cpp @@ -37,6 +37,20 @@ auto g_service = SensorDelayedSpSingleton::GetInstance(); const std::u16string SENSOR_INTERFACE_TOKEN = u"ISensorService"; } // namespace +template +size_t GetObject(T &object, const uint8_t *data, size_t size) +{ + 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 *[2]; @@ -64,14 +78,15 @@ void SetUpTestCase() bool OnRemoteRequestFuzzTest(const uint8_t *data, size_t size) { SetUpTestCase(); - MessageParcel datas; - datas.WriteInterfaceToken(SENSOR_INTERFACE_TOKEN); - datas.WriteBuffer(data, size); - datas.RewindRead(0); - MessageParcel reply; - MessageOption option; - g_service->OnRemoteRequest(static_cast(ISensorServiceIpcCode::COMMAND_GET_ACTIVE_INFO_LIST), - datas, reply, option); + if (g_service == nullptr) { + return false; + } + std::vector activeInfoList; + int32_t pid = 0; + GetObject(pid, data, size); + g_service->GetActiveInfoList(pid, activeInfoList); + g_service->EnableActiveInfoCB(); + g_service->DisableActiveInfoCB(); return true; } } // namespace Sensors diff --git a/test/fuzztest/services/getallsensorsstub_fuzzer/getallsensorsstub_fuzzer.cpp b/test/fuzztest/services/getallsensorsstub_fuzzer/getallsensorsstub_fuzzer.cpp index a8065681..9b1c351e 100644 --- a/test/fuzztest/services/getallsensorsstub_fuzzer/getallsensorsstub_fuzzer.cpp +++ b/test/fuzztest/services/getallsensorsstub_fuzzer/getallsensorsstub_fuzzer.cpp @@ -37,6 +37,20 @@ auto g_service = SensorDelayedSpSingleton::GetInstance(); const std::u16string SENSOR_INTERFACE_TOKEN = u"ISensorService"; } // namespace +template +size_t GetObject(T &object, const uint8_t *data, size_t size) +{ + 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 *[2]; @@ -64,14 +78,12 @@ void SetUpTestCase() bool OnRemoteRequestFuzzTest(const uint8_t *data, size_t size) { SetUpTestCase(); - MessageParcel datas; - datas.WriteInterfaceToken(SENSOR_INTERFACE_TOKEN); - datas.WriteBuffer(data, size); - datas.RewindRead(0); - MessageParcel reply; - MessageOption option; - g_service->OnRemoteRequest(static_cast(ISensorServiceIpcCode::COMMAND_GET_SENSOR_LIST), - datas, reply, option); + if (g_service == nullptr) { + return false; + } + std::vector sensorList; + GetObject(sensorList[0], data, size); + g_service->GetSensorList(sensorList); return true; } } // namespace Sensors diff --git a/test/fuzztest/services/resumesensorsstub_fuzzer/resumesensorsstub_fuzzer.cpp b/test/fuzztest/services/resumesensorsstub_fuzzer/resumesensorsstub_fuzzer.cpp index d5982641..32ab0fd6 100644 --- a/test/fuzztest/services/resumesensorsstub_fuzzer/resumesensorsstub_fuzzer.cpp +++ b/test/fuzztest/services/resumesensorsstub_fuzzer/resumesensorsstub_fuzzer.cpp @@ -37,6 +37,20 @@ auto g_service = SensorDelayedSpSingleton::GetInstance(); const std::u16string SENSOR_INTERFACE_TOKEN = u"ISensorService"; } // namespace +template +size_t GetObject(T &object, const uint8_t *data, size_t size) +{ + 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 *[2]; @@ -64,14 +78,12 @@ void SetUpTestCase() bool OnRemoteRequestFuzzTest(const uint8_t *data, size_t size) { SetUpTestCase(); - MessageParcel datas; - datas.WriteInterfaceToken(SENSOR_INTERFACE_TOKEN); - datas.WriteBuffer(data, size); - datas.RewindRead(0); - MessageParcel reply; - MessageOption option; - g_service->OnRemoteRequest(static_cast(ISensorServiceIpcCode::COMMAND_RESUME_SENSORS), - datas, reply, option); + if (g_service == nullptr) { + return false; + } + int32_t pid = 0; + GetObject(pid, data, size); + g_service->ResumeSensors(pid); return true; } } // namespace Sensors diff --git a/test/fuzztest/services/sensordisablestub_fuzzer/sensordisablestub_fuzzer.cpp b/test/fuzztest/services/sensordisablestub_fuzzer/sensordisablestub_fuzzer.cpp index be7aef29..e3aee833 100644 --- a/test/fuzztest/services/sensordisablestub_fuzzer/sensordisablestub_fuzzer.cpp +++ b/test/fuzztest/services/sensordisablestub_fuzzer/sensordisablestub_fuzzer.cpp @@ -78,16 +78,13 @@ void SetUpTestCase() bool OnRemoteRequestFuzzTest(const uint8_t *data, size_t size) { SetUpTestCase(); - MessageParcel datas; - datas.WriteInterfaceToken(SENSOR_INTERFACE_TOKEN); + if (g_service == nullptr) { + return false; + } + g_service->DisableSensor(SENSOR_TYPE_ID_ACCELEROMETER); int32_t sensorId = 0; GetObject(sensorId, data, size); - datas.WriteInt32(sensorId); - datas.RewindRead(0); - MessageParcel reply; - MessageOption option; - g_service->OnRemoteRequest(static_cast(ISensorServiceIpcCode::COMMAND_DISABLE_SENSOR), - datas, reply, option); + g_service->DisableSensor(sensorId); return true; } } // namespace Sensors diff --git a/test/fuzztest/services/sensorenablestub_fuzzer/sensorenablestub_fuzzer.cpp b/test/fuzztest/services/sensorenablestub_fuzzer/sensorenablestub_fuzzer.cpp index a714fd1d..58da44ef 100644 --- a/test/fuzztest/services/sensorenablestub_fuzzer/sensorenablestub_fuzzer.cpp +++ b/test/fuzztest/services/sensorenablestub_fuzzer/sensorenablestub_fuzzer.cpp @@ -35,6 +35,8 @@ namespace { constexpr size_t U32_AT_SIZE = 4; auto g_service = SensorDelayedSpSingleton::GetInstance(); const std::u16string SENSOR_INTERFACE_TOKEN = u"ISensorService"; +int64_t g_samplingPeriod = 100000000; +int64_t g_maxReportDelay = 100000000; } // namespace template @@ -78,23 +80,19 @@ void SetUpTestCase() bool OnRemoteRequestFuzzTest(const uint8_t *data, size_t size) { SetUpTestCase(); - MessageParcel datas; - datas.WriteInterfaceToken(SENSOR_INTERFACE_TOKEN); + if (g_service == nullptr) { + return false; + } + g_service->EnableSensor(SENSOR_TYPE_ID_ACCELEROMETER, g_samplingPeriod, g_maxReportDelay); + g_service->ResetSensors(); size_t startPos = 0; int32_t sensorId = 0; startPos += GetObject(sensorId, data + startPos, size - startPos); - datas.WriteInt32(sensorId); int64_t samplingPeriod = 0; startPos += GetObject(samplingPeriod, data + startPos, size - startPos); - datas.WriteInt64(samplingPeriod); int64_t maxReportDelay = 0; GetObject(maxReportDelay, data + startPos, size - startPos); - datas.WriteInt64(maxReportDelay); - datas.RewindRead(0); - MessageParcel reply; - MessageOption option; - g_service->OnRemoteRequest(static_cast(ISensorServiceIpcCode::COMMAND_ENABLE_SENSOR), - datas, reply, option); + g_service->EnableSensor(sensorId, samplingPeriod, maxReportDelay); return true; } } // namespace Sensors diff --git a/test/fuzztest/services/suspendsensorsstub_fuzzer/suspendsensorsstub_fuzzer.cpp b/test/fuzztest/services/suspendsensorsstub_fuzzer/suspendsensorsstub_fuzzer.cpp index a59873dd..3f5c276d 100644 --- a/test/fuzztest/services/suspendsensorsstub_fuzzer/suspendsensorsstub_fuzzer.cpp +++ b/test/fuzztest/services/suspendsensorsstub_fuzzer/suspendsensorsstub_fuzzer.cpp @@ -37,6 +37,20 @@ auto g_service = SensorDelayedSpSingleton::GetInstance(); const std::u16string SENSOR_INTERFACE_TOKEN = u"ISensorService"; } // namespace +template +size_t GetObject(T &object, const uint8_t *data, size_t size) +{ + 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 *[2]; @@ -64,14 +78,12 @@ void SetUpTestCase() bool OnRemoteRequestFuzzTest(const uint8_t *data, size_t size) { SetUpTestCase(); - MessageParcel datas; - datas.WriteInterfaceToken(SENSOR_INTERFACE_TOKEN); - datas.WriteBuffer(data, size); - datas.RewindRead(0); - MessageParcel reply; - MessageOption option; - g_service->OnRemoteRequest(static_cast(ISensorServiceIpcCode::COMMAND_SUSPEND_SENSORS), - datas, reply, option); + if (g_service == nullptr) { + return false; + } + int32_t pid = 0; + GetObject(pid, data, size); + g_service->SuspendSensors(pid); return true; } } // namespace Sensors -- Gitee