diff --git a/test/fuzztest/dinputinitsink_fuzzer/dinputinitsink_fuzzer.cpp b/test/fuzztest/dinputinitsink_fuzzer/dinputinitsink_fuzzer.cpp index 93ae58ef1edbf907ebca370cd8b06281355426cc..911cb59613ab42a05ab55de25a5d5a5723b09d62 100644 --- a/test/fuzztest/dinputinitsink_fuzzer/dinputinitsink_fuzzer.cpp +++ b/test/fuzztest/dinputinitsink_fuzzer/dinputinitsink_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-2024 Huawei Device Co., Ltd. + * Copyright (c) 2023-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 @@ -42,6 +42,39 @@ void InitSinkFuzzTest(const uint8_t *data, size_t size) const uint32_t sleepTimeUs = 50 * 1000; usleep(sleepTimeUs); } + +void OnLoadSystemAbilitySuccessFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size < sizeof(int32_t))) { + return; + } + int32_t saId = *(reinterpret_cast(data)); + DistributedInput::DistributedInputSinkHandler::SALoadSinkCb saLoadSinkCb; + saLoadSinkCb.OnLoadSystemAbilitySuccess(saId, nullptr); +} + +void OnLoadSystemAbilityFailFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size < sizeof(int32_t))) { + return; + } + int32_t saId = *(reinterpret_cast(data)); + DistributedInput::DistributedInputSinkHandler::SALoadSinkCb saLoadSinkCb; + saLoadSinkCb.OnLoadSystemAbilityFail(saId); +} + +void OnRemoteSinkSvrDiedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + std::string networkId(reinterpret_cast(data), size); + DistributedInput::DistributedInputSinkHandler::GetInstance().OnRemoteSinkSvrDied(nullptr); + DistributedInput::DistributedInputSinkHandler::GetInstance().RegisterPrivacyResources(nullptr); + DistributedInput::DistributedInputSinkHandler::GetInstance().PauseDistributedHardware(networkId); + DistributedInput::DistributedInputSinkHandler::GetInstance().ResumeDistributedHardware(networkId); + DistributedInput::DistributedInputSinkHandler::GetInstance().StopDistributedHardware(networkId); +} } // namespace DistributedHardware } // namespace OHOS @@ -50,5 +83,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { /* Run your code on data */ OHOS::DistributedHardware::InitSinkFuzzTest(data, size); + OHOS::DistributedHardware::OnLoadSystemAbilitySuccessFuzzTest(data, size); + OHOS::DistributedHardware::OnLoadSystemAbilityFailFuzzTest(data, size); + OHOS::DistributedHardware::OnRemoteSinkSvrDiedFuzzTest(data, size); return 0; } \ No newline at end of file diff --git a/test/fuzztest/dinputinitsource_fuzzer/dinputinitsource_fuzzer.cpp b/test/fuzztest/dinputinitsource_fuzzer/dinputinitsource_fuzzer.cpp index 98d71204b0650492bc045d50650aa826b6fe559f..aa4e39660426ad10462e79c3f89432e08e0bd283 100644 --- a/test/fuzztest/dinputinitsource_fuzzer/dinputinitsource_fuzzer.cpp +++ b/test/fuzztest/dinputinitsource_fuzzer/dinputinitsource_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Huawei Device Co., Ltd. + * Copyright (c) 2023-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 @@ -39,6 +39,37 @@ void InitSourceFuzzTest(const uint8_t *data, size_t size) std::string params(reinterpret_cast(data), size); DistributedInput::DistributedInputSourceHandler::GetInstance().InitSource(params); } + +void OnLoadSystemAbilitySuccessFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size < sizeof(int32_t))) { + return; + } + int32_t saId = *(reinterpret_cast(data)); + DistributedInput::DistributedInputSourceHandler::SALoadSourceCb saLoadSourceCb; + saLoadSourceCb.OnLoadSystemAbilitySuccess(saId, nullptr); +} + +void OnLoadSystemAbilityFailFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size < sizeof(int32_t))) { + return; + } + int32_t saId = *(reinterpret_cast(data)); + DistributedInput::DistributedInputSourceHandler::SALoadSourceCb saLoadSourceCb; + saLoadSourceCb.OnLoadSystemAbilityFail(saId); +} + +void OnRemoteSourceSvrDiedFuzzTest(const uint8_t *data, size_t size) +{ + (void)data; + (void)size; + DistributedInput::DistributedInputSourceHandler::GetInstance().OnRemoteSourceSvrDied(nullptr); + DistributedInput::DistributedInputSourceHandler::GetInstance().RegisterDistributedHardwareStateListener(nullptr); + DistributedInput::DistributedInputSourceHandler::GetInstance().UnregisterDistributedHardwareStateListener(); + DistributedInput::DistributedInputSourceHandler::GetInstance().RegisterDataSyncTriggerListener(nullptr); + DistributedInput::DistributedInputSourceHandler::GetInstance().UnregisterDataSyncTriggerListener(); +} } // namespace DistributedHardware } // namespace OHOS @@ -47,5 +78,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { /* Run your code on data */ OHOS::DistributedHardware::InitSourceFuzzTest(data, size); + OHOS::DistributedHardware::OnLoadSystemAbilitySuccessFuzzTest(data, size); + OHOS::DistributedHardware::OnLoadSystemAbilityFailFuzzTest(data, size); + OHOS::DistributedHardware::OnRemoteSourceSvrDiedFuzzTest(data, size); return 0; } \ No newline at end of file diff --git a/test/fuzztest/distributedinputtransportbase_fuzzer/BUILD.gn b/test/fuzztest/distributedinputtransportbase_fuzzer/BUILD.gn index f12ceec15fb0b3fc6cf1efba2e09571bffea604f..372aacb3d6416a7e5d93fff800a1e9c9d2f2fff1 100644 --- a/test/fuzztest/distributedinputtransportbase_fuzzer/BUILD.gn +++ b/test/fuzztest/distributedinputtransportbase_fuzzer/BUILD.gn @@ -79,6 +79,7 @@ ohos_fuzztest("DistributedInputTransportBaseFuzzTest") { "HI_LOG_ENABLE", "DH_LOG_TAG=\"DistributedInputTransportBaseFuzzTest\"", "LOG_DOMAIN=0xD004120", + "private=public", ] } diff --git a/test/fuzztest/distributedinputtransportbase_fuzzer/distributed_input_transport_base_fuzzer.cpp b/test/fuzztest/distributedinputtransportbase_fuzzer/distributed_input_transport_base_fuzzer.cpp index c0c3bbd205ef73d6263cfd307ffeb5bc2d7f5d1d..e88107f57d047e7cfd78cde357d593a2ed5acb92 100644 --- a/test/fuzztest/distributedinputtransportbase_fuzzer/distributed_input_transport_base_fuzzer.cpp +++ b/test/fuzztest/distributedinputtransportbase_fuzzer/distributed_input_transport_base_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 @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -54,6 +55,63 @@ void OnBytesReceivedFuzzTest(const uint8_t *data, size_t size) uint32_t dataLen = static_cast(size); DistributedInput::DistributedInputTransportBase::GetInstance().OnBytesReceived(sessionId, msg, dataLen); } + +void GetSessionIdByDevIdFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + std::string srcId(reinterpret_cast(data), size); + DistributedInput::DistributedInputTransportBase::GetInstance().GetSessionIdByDevId(srcId); +} + +void HandleSessionFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size < sizeof(int32_t))) { + return; + } + int32_t sessionId = *(reinterpret_cast(data)); + std::string message(reinterpret_cast(data), size); + DistributedInput::DistributedInputTransportBase::GetInstance().HandleSession(sessionId, message); +} + +void OnSessionClosedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size < sizeof(int32_t))) { + return; + } + FuzzedDataProvider fdp(data, size); + int32_t sessionId = fdp.ConsumeIntegral(); + int32_t reasonValue = fdp.ConsumeIntegral(); + ShutdownReason reason = static_cast(reasonValue); + + DistributedInput::DistributedInputTransportBase::GetInstance().RegisterSinkHandleSessionCallback(nullptr); + DistributedInput::DistributedInputTransportBase::GetInstance().RegisterSrcHandleSessionCallback(nullptr); + DistributedInput::DistributedInputTransportBase::GetInstance().RegisterSourceManagerCallback(nullptr); + DistributedInput::DistributedInputTransportBase::GetInstance().OnSessionClosed(sessionId, reason); +} + +void EraseSessionIdFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + std::string remoteDevId(reinterpret_cast(data), size); + sptr callback = nullptr; + DistributedInput::DistributedInputTransportBase::GetInstance().RegisterSessionStateCb(callback); + DistributedInput::DistributedInputTransportBase::GetInstance().UnregisterSessionStateCb(); + DistributedInput::DistributedInputTransportBase::GetInstance().GetCurrentSessionId(); + DistributedInput::DistributedInputTransportBase::GetInstance().StopAllSession(); + DistributedInput::DistributedInputTransportBase::GetInstance().EraseSessionId(remoteDevId); +} + +void InitFuzzTest(const uint8_t *data, size_t size) +{ + (void)data; + (void)size; + DistributedInput::DistributedInputTransportBase::GetInstance().Init(); + DistributedInput::DistributedInputTransportBase::GetInstance().CreateServerSocket(); +} } // namespace DistributedHardware } // namespace OHOS @@ -63,5 +121,10 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) /* Run your code on data */ OHOS::DistributedHardware::StartSessionFuzzTest(data, size); OHOS::DistributedHardware::OnBytesReceivedFuzzTest(data, size); + OHOS::DistributedHardware::GetSessionIdByDevIdFuzzTest(data, size); + OHOS::DistributedHardware::HandleSessionFuzzTest(data, size); + OHOS::DistributedHardware::OnSessionClosedFuzzTest(data, size); + OHOS::DistributedHardware::EraseSessionIdFuzzTest(data, size); + OHOS::DistributedHardware::InitFuzzTest(data, size); return 0; } \ No newline at end of file