From e8c59d2f8846ef3ea46fe7a30478226639b28265 Mon Sep 17 00:00:00 2001 From: li-tiangang4 Date: Tue, 15 Jul 2025 14:21:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dfuzz=E7=94=A8=E4=BE=8Babrt?= =?UTF-8?q?=E5=B9=B6=E8=A1=A5=E5=85=85fuzz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: li-tiangang4 --- .../ipc/src/distributed_input_client.cpp | 4 ++-- ...istributed_input_sink_transport_fuzzer.cpp | 12 +++++++--- ...istributed_input_transport_base_fuzzer.cpp | 22 +++++++++++++++++++ 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/interfaces/ipc/src/distributed_input_client.cpp b/interfaces/ipc/src/distributed_input_client.cpp index b0cea8f..7695489 100644 --- a/interfaces/ipc/src/distributed_input_client.cpp +++ b/interfaces/ipc/src/distributed_input_client.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2024 Huawei Device Co., Ltd. + * Copyright (c) 2021-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 @@ -329,7 +329,7 @@ int32_t DistributedInputClient::RegisterDistributedHardware(const std::string &d const std::string ¶meters, const std::shared_ptr &callback) { DHLOGI("DinputRegister called, deviceId: %{public}s, dhId: %{public}s, parameters: %{public}s.", - GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str(), SetAnonyId(parameters).c_str()); + GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str(), parameters.c_str()); if (!DInputSAManager::GetInstance().GetDInputSourceProxy()) { DHLOGE("DinputRegister client fail."); return ERR_DH_INPUT_CLIENT_GET_SOURCE_PROXY_FAIL; diff --git a/test/fuzztest/distributedinputsinktransport_fuzzer/distributed_input_sink_transport_fuzzer.cpp b/test/fuzztest/distributedinputsinktransport_fuzzer/distributed_input_sink_transport_fuzzer.cpp index 80e5f06..6be73e0 100644 --- a/test/fuzztest/distributedinputsinktransport_fuzzer/distributed_input_sink_transport_fuzzer.cpp +++ b/test/fuzztest/distributedinputsinktransport_fuzzer/distributed_input_sink_transport_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2023 Huawei Device Co., Ltd. + * Copyright (c) 2021-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 @@ -33,7 +33,10 @@ void RespPrepareRemoteInputFuzzTest(const uint8_t *data, size_t size) } int32_t sessionId = *(reinterpret_cast(data)); - std::string smsg(reinterpret_cast(data), size); + nlohmann::json jsonStr; + jsonStr["device_id"] = "123456"; + jsonStr["dh_id"] = "dinput_1"; + std::string smsg = jsonStr.dump(); DistributedInput::DistributedInputSinkTransport::GetInstance().RespPrepareRemoteInput(sessionId, smsg); DistributedInput::DistributedInputSinkTransport::GetInstance().RespUnprepareRemoteInput(sessionId, smsg); @@ -46,7 +49,10 @@ void RespStartRemoteInputFuzzTest(const uint8_t *data, size_t size) } int32_t sessionId = *(reinterpret_cast(data)); - std::string smsg(reinterpret_cast(data), size); + nlohmann::json jsonStr; + jsonStr["device_id"] = "123456"; + jsonStr["dh_id"] = "dinput_1"; + std::string smsg = jsonStr.dump(); DistributedInput::DistributedInputSinkTransport::GetInstance().RespStartRemoteInput(sessionId, smsg); DistributedInput::DistributedInputSinkTransport::GetInstance().RespStopRemoteInput(sessionId, smsg); 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 a8dcdb6..89fe764 100644 --- a/test/fuzztest/distributedinputtransportbase_fuzzer/distributed_input_transport_base_fuzzer.cpp +++ b/test/fuzztest/distributedinputtransportbase_fuzzer/distributed_input_transport_base_fuzzer.cpp @@ -111,6 +111,26 @@ void InitFuzzTest(const uint8_t *data, size_t size) (void)size; DistributedInput::DistributedInputTransportBase::GetInstance().Init(); } + +void ReleaseFuzzTest(const uint8_t *data, size_t size) +{ + (void)data; + (void)size; + DistributedInput::DistributedInputTransportBase::GetInstance().Release(); +} + +void CreateClientSocketFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + FuzzedDataProvider fdp(data, size); + std::string remoteDevId = fdp.ConsumeRandomLengthString(); + DistributedInput::DistributedInputTransportBase::GetInstance().CreateClientSocket(remoteDevId); + if (DistributedInput::DistributedInputTransportBase::GetInstance().sessionId_ > 0) { + Shutdown(DistributedInput::DistributedInputTransportBase::GetInstance().sessionId_); + } +} } // namespace DistributedHardware } // namespace OHOS @@ -125,5 +145,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) OHOS::DistributedHardware::OnSessionClosedFuzzTest(data, size); OHOS::DistributedHardware::EraseSessionIdFuzzTest(data, size); OHOS::DistributedHardware::InitFuzzTest(data, size); + OHOS::DistributedHardware::ReleaseFuzzTest(data, size); + OHOS::DistributedHardware::CreateClientSocketFuzzTest(data, size); return 0; } \ No newline at end of file -- Gitee