mirror of
https://github.com/openharmony/distributedhardware_distributed_input.git
synced 2026-08-26 19:07:09 -04:00
@@ -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<const int32_t*>(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<const int32_t*>(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<const char*>(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;
|
||||
}
|
||||
@@ -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<const char*>(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<const int32_t*>(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<const int32_t*>(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;
|
||||
}
|
||||
@@ -79,6 +79,7 @@ ohos_fuzztest("DistributedInputTransportBaseFuzzTest") {
|
||||
"HI_LOG_ENABLE",
|
||||
"DH_LOG_TAG=\"DistributedInputTransportBaseFuzzTest\"",
|
||||
"LOG_DOMAIN=0xD004120",
|
||||
"private=public",
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
+64
-1
@@ -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 <cstddef>
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
#include <fuzzer/FuzzedDataProvider.h>
|
||||
#include <iostream>
|
||||
#include <thread>
|
||||
#include <unistd.h>
|
||||
@@ -54,6 +55,63 @@ void OnBytesReceivedFuzzTest(const uint8_t *data, size_t size)
|
||||
uint32_t dataLen = static_cast<const uint32_t>(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<const char*>(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<const int32_t*>(data));
|
||||
std::string message(reinterpret_cast<const char*>(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>();
|
||||
int32_t reasonValue = fdp.ConsumeIntegral<int32_t>();
|
||||
ShutdownReason reason = static_cast<ShutdownReason>(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<const char*>(data), size);
|
||||
sptr<DistributedInput::ISessionStateCallback> 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;
|
||||
}
|
||||
Reference in New Issue
Block a user