diff --git a/services/distributeddataservice/service/test/fuzztest/rdbresultsetstub_fuzzer/rdbresultsetstub_fuzzer.cpp b/services/distributeddataservice/service/test/fuzztest/rdbresultsetstub_fuzzer/rdbresultsetstub_fuzzer.cpp index 9f10a09f56a02b58b1632964830086c41f89a9dc..14d6d1c69b3ab60f12046ce66f5568fc8dfd4760 100644 --- a/services/distributeddataservice/service/test/fuzztest/rdbresultsetstub_fuzzer/rdbresultsetstub_fuzzer.cpp +++ b/services/distributeddataservice/service/test/fuzztest/rdbresultsetstub_fuzzer/rdbresultsetstub_fuzzer.cpp @@ -15,29 +15,31 @@ #include "rdbresultsetstub_fuzzer.h" +#include + #include #include #include +#include "message_parcel.h" #include "rdb_result_set_impl.h" #include "rdb_result_set_stub.h" -#include "message_parcel.h" -#include "store/cursor.h" #include "securec.h" +#include "store/cursor.h" using namespace OHOS::DistributedRdb; - namespace OHOS { +using Code = NativeRdb::RemoteResultSet::Code; const std::u16string INTERFACE_TOKEN = u"OHOS::NativeRdb.IResultSet"; -constexpr uint32_t CODE_MIN = 0; -constexpr uint32_t CODE_MAX = NativeRdb::RemoteResultSet::Code::CMD_MAX + 1; bool OnRemoteRequestFuzz(const uint8_t *data, size_t size) { - uint32_t code = static_cast(*data) % (CODE_MAX - CODE_MIN + 1) + CODE_MIN; + FuzzedDataProvider provider(data, size); + uint32_t code = provider.ConsumeIntegralInRange(0, Code::CMD_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; MessageOption option; @@ -52,11 +54,6 @@ 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); - return 0; } \ No newline at end of file diff --git a/services/distributeddataservice/service/test/fuzztest/rdbservicestub_fuzzer/rdbservicestub_fuzzer.cpp b/services/distributeddataservice/service/test/fuzztest/rdbservicestub_fuzzer/rdbservicestub_fuzzer.cpp index a9ef6e03d54f52e11cc42b2dc16ba8dd4b1795bc..60767879aa99d8763621d53b71b031de094bacfa 100644 --- a/services/distributeddataservice/service/test/fuzztest/rdbservicestub_fuzzer/rdbservicestub_fuzzer.cpp +++ b/services/distributeddataservice/service/test/fuzztest/rdbservicestub_fuzzer/rdbservicestub_fuzzer.cpp @@ -15,20 +15,20 @@ #include "rdbservicestub_fuzzer.h" +#include + #include #include #include "ipc_skeleton.h" -#include "rdb_service_impl.h" #include "message_parcel.h" +#include "rdb_service_impl.h" #include "securec.h" using namespace OHOS::DistributedRdb; namespace OHOS { const std::u16string INTERFACE_TOKEN = u"OHOS.DistributedRdb.IRdbService"; -constexpr uint32_t CODE_MIN = 0; -constexpr uint32_t CODE_MAX = static_cast(RdbServiceCode::RDB_SERVICE_CMD_MAX) + 1; constexpr size_t NUM_MIN = 5; constexpr size_t NUM_MAX = 12; @@ -39,10 +39,13 @@ bool OnRemoteRequestFuzz(const uint8_t *data, size_t size) rdbServiceImpl->OnBind( { "RdbServiceStubFuzz", static_cast(IPCSkeleton::GetSelfTokenID()), std::move(executor) }); - uint32_t code = static_cast(*data) % (CODE_MAX - CODE_MIN + 1) + CODE_MIN; + FuzzedDataProvider provider(data, size); + uint32_t code = + provider.ConsumeIntegralInRange(0, static_cast(RdbServiceCode::RDB_SERVICE_CMD_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 rdbServiceStub = rdbServiceImpl; @@ -54,11 +57,6 @@ 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); - return 0; } \ No newline at end of file