From 3d04189ef4056f6bbeba23ba86074533c70e4a85 Mon Sep 17 00:00:00 2001 From: xuwenqi Date: Fri, 16 May 2025 11:13:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9share=20fuzz=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xuwenqi --- .../datashareservicestub_fuzzer.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/services/distributeddataservice/service/test/fuzztest/datashareservicestub_fuzzer/datashareservicestub_fuzzer.cpp b/services/distributeddataservice/service/test/fuzztest/datashareservicestub_fuzzer/datashareservicestub_fuzzer.cpp index df4f212d0..1bdfe1cd7 100644 --- a/services/distributeddataservice/service/test/fuzztest/datashareservicestub_fuzzer/datashareservicestub_fuzzer.cpp +++ b/services/distributeddataservice/service/test/fuzztest/datashareservicestub_fuzzer/datashareservicestub_fuzzer.cpp @@ -17,6 +17,7 @@ #include #include +#include #include "data_share_service_impl.h" #include "ipc_skeleton.h" @@ -27,22 +28,22 @@ using namespace OHOS::DataShare; namespace OHOS { const std::u16string INTERFACE_TOKEN = u"OHOS.DataShare.IDataShareService"; -constexpr uint32_t CODE_MIN = 0; constexpr uint32_t CODE_MAX = IDataShareService::DATA_SHARE_SERVICE_CMD_MAX + 1; 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 dataShareServiceImpl = std::make_shared(); std::shared_ptr executor = std::make_shared(NUM_MAX, NUM_MIN); dataShareServiceImpl->OnBind( { "DataShareServiceStubFuzz", static_cast(IPCSkeleton::GetSelfTokenID()), std::move(executor) }); - uint32_t code = static_cast(*data) % (CODE_MAX - CODE_MIN + 1) + CODE_MIN; + uint32_t code = provider.ConsumeIntegralInRange(0, CODE_MAX); + std::vector remaining_data = provider.ConsumeRemainingBytes(); MessageParcel request; request.WriteInterfaceToken(INTERFACE_TOKEN); - request.WriteBuffer(data, size); + request.WriteBuffer(static_cast(remaining_data.data()), remaining_data.size()); request.RewindRead(0); MessageParcel reply; std::shared_ptr dataShareServiceStub = dataShareServiceImpl; @@ -54,11 +55,7 @@ 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