From b9701453b69f51d55631a3613c185bf88cd50fff Mon Sep 17 00:00:00 2001 From: li-tiangang4 Date: Tue, 20 May 2025 11:00:17 +0800 Subject: [PATCH] add fuzz Signed-off-by: li-tiangang4 --- .../distributedhardwarefwkkit_fuzzer.cpp | 43 +++++++++++++++++++ .../accessmanager_fuzzer.cpp | 36 +++++++++++++++- 2 files changed, 78 insertions(+), 1 deletion(-) diff --git a/interfaces/inner_kits/test/fuzztest/distributedhardwarefwkkit_fuzzer/distributedhardwarefwkkit_fuzzer.cpp b/interfaces/inner_kits/test/fuzztest/distributedhardwarefwkkit_fuzzer/distributedhardwarefwkkit_fuzzer.cpp index a164535c..afd2c4a6 100644 --- a/interfaces/inner_kits/test/fuzztest/distributedhardwarefwkkit_fuzzer/distributedhardwarefwkkit_fuzzer.cpp +++ b/interfaces/inner_kits/test/fuzztest/distributedhardwarefwkkit_fuzzer/distributedhardwarefwkkit_fuzzer.cpp @@ -268,6 +268,42 @@ void DisableSourceFuzzTest(const uint8_t *data, size_t size) std::vector descriptors; dhfwkKit.DisableSource(networkId, descriptors); } + +void EnableSinkFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + + DistributedHardwareFwkKit dhfwkKit; + std::vector descriptors; + std::string dhId(reinterpret_cast(data), size); + DHType dhType = DHType::AUDIO; + DHDescriptor dhDescriptor { + .id = dhId, + .dhType = dhType + }; + descriptors.push_back(dhDescriptor); + dhfwkKit.EnableSink(descriptors); +} + +void DisableSinkFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + + DistributedHardwareFwkKit dhfwkKit; + std::vector descriptors; + std::string dhId(reinterpret_cast(data), size); + DHType dhType = DHType::AUDIO; + DHDescriptor dhDescriptor { + .id = dhId, + .dhType = dhType + }; + descriptors.push_back(dhDescriptor); + dhfwkKit.DisableSink(descriptors); +} } // namespace DistributedHardware } // namespace OHOS @@ -285,5 +321,12 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) OHOS::DistributedHardware::PauseDistributedHardwareFuzzTest(data, size); OHOS::DistributedHardware::ResumeDistributedHardwareFuzzTest(data, size); OHOS::DistributedHardware::StopDistributedHardwareFuzzTest(data, size); + OHOS::DistributedHardware::GetDistributedHardwareFuzzTest(data, size); + OHOS::DistributedHardware::RegisterDHStatusListenerFuzzTest(data, size); + OHOS::DistributedHardware::UnregisterDHStatusListenerFuzzTest(data, size); + OHOS::DistributedHardware::EnableSourceFuzzTest(data, size); + OHOS::DistributedHardware::DisableSourceFuzzTest(data, size); + OHOS::DistributedHardware::EnableSinkFuzzTest(data, size); + OHOS::DistributedHardware::DisableSinkFuzzTest(data, size); return 0; } \ No newline at end of file diff --git a/services/distributedhardwarefwkservice/test/fuzztest/accessmanager_fuzzer/accessmanager_fuzzer.cpp b/services/distributedhardwarefwkservice/test/fuzztest/accessmanager_fuzzer/accessmanager_fuzzer.cpp index c358d202..ab8eb762 100644 --- a/services/distributedhardwarefwkservice/test/fuzztest/accessmanager_fuzzer/accessmanager_fuzzer.cpp +++ b/services/distributedhardwarefwkservice/test/fuzztest/accessmanager_fuzzer/accessmanager_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-2024 Huawei Device Co., Ltd. + * Copyright (c) 2022-2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -51,6 +51,38 @@ void OnDeviceReadyFuzzTest(const uint8_t* data, size_t size) usleep(SLEEP_TIME_US); } + +void OnDeviceOnlineFuzzTest(const uint8_t* data, size_t size) +{ + if ((data == nullptr) || (size > DM_MAX_DEVICE_ID_LEN)) { + return; + } + + AccessManager::GetInstance()->Init(); + DmDeviceInfo deviceInfo; + int32_t ret = memcpy_s(deviceInfo.networkId, DM_MAX_DEVICE_ID_LEN, (reinterpret_cast(data)), size); + if (ret != EOK) { + return; + } + AccessManager::GetInstance()->OnDeviceOffline(deviceInfo); + usleep(SLEEP_TIME_US); +} + +void OnDeviceChangedFuzzTest(const uint8_t* data, size_t size) +{ + if ((data == nullptr) || (size > DM_MAX_DEVICE_ID_LEN)) { + return; + } + + AccessManager::GetInstance()->Init(); + DmDeviceInfo deviceInfo; + int32_t ret = memcpy_s(deviceInfo.deviceId, DM_MAX_DEVICE_ID_LEN, (reinterpret_cast(data)), size); + if (ret != EOK) { + return; + } + AccessManager::GetInstance()->OnDeviceChanged(deviceInfo); + usleep(SLEEP_TIME_US); +} } } @@ -59,6 +91,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { /* Run your code on data */ OHOS::DistributedHardware::OnDeviceReadyFuzzTest(data, size); + OHOS::DistributedHardware::OnDeviceOnlineFuzzTest(data, size); + OHOS::DistributedHardware::OnDeviceChangedFuzzTest(data, size); return 0; } -- Gitee