From c711f0490b80e0357e7466d87144045926bf2a53 Mon Sep 17 00:00:00 2001 From: luqing Date: Mon, 12 May 2025 15:16:24 +0800 Subject: [PATCH] =?UTF-8?q?fuzz=E7=94=A8=E4=BE=8B=E6=95=B4=E6=94=B9=20Sign?= =?UTF-8?q?ed-off-by:=20luqing=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../objectservicestub_fuzzer.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicestub_fuzzer/objectservicestub_fuzzer.cpp b/services/distributeddataservice/service/test/fuzztest/objectservicestub_fuzzer/objectservicestub_fuzzer.cpp index 24ce52ba6..eea460a24 100644 --- a/services/distributeddataservice/service/test/fuzztest/objectservicestub_fuzzer/objectservicestub_fuzzer.cpp +++ b/services/distributeddataservice/service/test/fuzztest/objectservicestub_fuzzer/objectservicestub_fuzzer.cpp @@ -13,14 +13,15 @@ * limitations under the License. */ -#include "objectservicestub_fuzzer.h" +#include #include #include #include "ipc_skeleton.h" -#include "object_service_impl.h" #include "message_parcel.h" +#include "object_service_impl.h" +#include "objectservicestub_fuzzer.h" #include "securec.h" using namespace OHOS::DistributedObject; @@ -32,17 +33,18 @@ constexpr uint32_t CODE_MAX = static_cast(ObjectCode::OBJECTSTORE_SERV constexpr size_t NUM_MIN = 5; constexpr size_t NUM_MAX = 12; -bool OnRemoteRequestFuzz(const uint8_t *data, size_t size) +bool OnRemoteRequestFuzz(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); std::shared_ptr executor = std::make_shared(NUM_MAX, NUM_MIN); objectServiceImpl->OnBind( { "ObjectServiceStubFuzz", static_cast(IPCSkeleton::GetSelfTokenID()), std::move(executor) }); - uint32_t code = static_cast(*data) % (CODE_MAX - CODE_MIN + 1) + CODE_MIN; + ObjectCode::OBJECTSTORE_SERVICE_CMD_MAX code = provider.ConsumeEnumObjectCode::OBJECTSTORE_SERVICE_CMD_MAX(); MessageParcel request; request.WriteInterfaceToken(INTERFACE_TOKEN); - request.WriteBuffer(data, size); + std::vector remaining_data = provider.ConsumeRemainingBytes(); + request.WriteBuffer(static_cast(remaining_data.data()), remaining_data.size()); request.RewindRead(0); MessageParcel reply; std::shared_ptr objectServiceStub = objectServiceImpl; @@ -54,11 +56,8 @@ bool OnRemoteRequestFuzz(const uint8_t *data, size_t size) /* Fuzzer entry point */ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - if (data == nullptr) { - return 0; - } - - OHOS::OnRemoteRequestFuzz(data, size); + FuzzedDataProvider provider(data, size); + OHOS::OnRemoteRequestFuzz(provider); return 0; } \ No newline at end of file -- Gitee