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 24ce52ba6dd952eee47559763a72e6be1335f036..d5c754b4204e2b8c808d2911bad5887d5e8306dd 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; + uint32_t code = provider.ConsumeIntegralInRange(CODE_MIN, CODE_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