From a04cdf377746f7fedeb5e24f940bf386811a518b Mon Sep 17 00:00:00 2001 From: pwx1285814 Date: Wed, 18 Dec 2024 21:00:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dfuzz=E5=91=8A=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: pwx1285814 Change-Id: Iabfe9c891b5bb4a49e8135339705a2fa99d37a5e --- .../onoutputformatchanged_fuzzer.cpp | 18 +-- .../onoutputformatchanged_fuzzer/project.xml | 2 +- .../softbusadapter_fuzzer/project.xml | 2 +- .../softbusadapter_fuzzer.cpp | 119 ++++++++++-------- 4 files changed, 76 insertions(+), 65 deletions(-) diff --git a/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/onoutputformatchanged_fuzzer.cpp b/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/onoutputformatchanged_fuzzer.cpp index 62dc76c6..78e393d3 100644 --- a/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/onoutputformatchanged_fuzzer.cpp +++ b/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/onoutputformatchanged_fuzzer.cpp @@ -16,12 +16,12 @@ #include "onoutputformatchanged_fuzzer.h" #include - #include "avcodec_common.h" #include "avcodec_errors.h" #include "dscreen_constants.h" #include "dscreen_constants.h" #include "dscreen_errcode.h" +#include "fuzzer/FuzzedDataProvider.h" #include "iimage_source_processor_listener.h" #include "image_encoder_callback.h" #include "image_source_encoder.h" @@ -31,30 +31,30 @@ namespace OHOS { namespace DistributedHardware { -void OnOutputFormatChangedFuzzTest(const uint8_t* data, size_t size) +void OnOutputFormatChangedFuzzTest(const uint8_t *data, size_t size) { - if ((data == nullptr) || (size < sizeof(int32_t))) { + if ((data == nullptr) || (size == 0)) { return; } std::shared_ptr listener = std::make_shared(); std::shared_ptr encoder = std::make_shared(listener); std::shared_ptr encoderCallback = std::make_shared(encoder); + FuzzedDataProvider dataProvider(data, size); + int32_t width = dataProvider.ConsumeIntegral(); + int32_t height = dataProvider.ConsumeIntegral(); Media::Format format; - int32_t width = *(reinterpret_cast(data)); - int32_t height = *(reinterpret_cast(data)); format.PutIntValue(KEY_WIDTH, width); format.PutIntValue(KEY_HEIGHT, height); encoderCallback->OnOutputFormatChanged(format); } -} // namespace DistributedHardware -} // namespace OHOS +} // namespace DistributedHardware +} // namespace OHOS /* Fuzzer entry point */ -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { /* Run your code on data */ OHOS::DistributedHardware::OnOutputFormatChangedFuzzTest(data, size); return 0; } - diff --git a/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/project.xml b/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/project.xml index 4fdbc407..dca0b2a0 100644 --- a/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/project.xml +++ b/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/project.xml @@ -16,7 +16,7 @@ - 1000 + 10000 300 diff --git a/services/softbusadapter/test/fuzztest/softbusadapter_fuzzer/project.xml b/services/softbusadapter/test/fuzztest/softbusadapter_fuzzer/project.xml index 7133b2b9..93837373 100644 --- a/services/softbusadapter/test/fuzztest/softbusadapter_fuzzer/project.xml +++ b/services/softbusadapter/test/fuzztest/softbusadapter_fuzzer/project.xml @@ -16,7 +16,7 @@ - 1000 + 10000 300 diff --git a/services/softbusadapter/test/fuzztest/softbusadapter_fuzzer/softbusadapter_fuzzer.cpp b/services/softbusadapter/test/fuzztest/softbusadapter_fuzzer/softbusadapter_fuzzer.cpp index 8b998311..dbaf6e0a 100644 --- a/services/softbusadapter/test/fuzztest/softbusadapter_fuzzer/softbusadapter_fuzzer.cpp +++ b/services/softbusadapter/test/fuzztest/softbusadapter_fuzzer/softbusadapter_fuzzer.cpp @@ -18,6 +18,7 @@ #include "dscreen_constants.h" #include "dscreen_errcode.h" #include "dscreen_util.h" +#include "fuzzer/FuzzedDataProvider.h" #include "isoftbus_listener.h" #include "socket.h" #include "softbus_adapter.h" @@ -27,31 +28,32 @@ namespace OHOS { namespace DistributedHardware { namespace { - const std::string PEER_SESSION_NAME = "ohos.dhardware.dscreen.session8647073e02e7a78f09473aa324"; - const std::string REMOTE_DEV_ID = "f6d4c0864707aefte7a78f09473aa122ff57fc81c00981fcf5be989e7d112324"; - const std::string DSCREEN_PKG_NAME_TEST = "ohos.dhardware.dscreen"; +const std::string PEER_SESSION_NAME = "ohos.dhardware.dscreen.session8647073e02e7a78f09473aa324"; +const std::string REMOTE_DEV_ID = "f6d4c0864707aefte7a78f09473aa122ff57fc81c00981fcf5be989e7d112324"; +const std::string DSCREEN_PKG_NAME_TEST = "ohos.dhardware.dscreen"; } -void SoftbusAdapterFuzzTest(const uint8_t* data, size_t size) +void SoftbusAdapterFuzzTest(const uint8_t *data, size_t size) { - if ((data == nullptr) || (size < sizeof(int32_t))) { + if ((data == nullptr) || (size == 0)) { return; } - int32_t sessionId = *(reinterpret_cast(data)); + FuzzedDataProvider dataProvider(data, size); + int32_t sessionId = dataProvider.ConsumeIntegral(); + uint32_t dataLen = dataProvider.ConsumeIntegral(); + unsigned int dataLen1 = dataProvider.ConsumeIntegral(); PeerSocketInfo peerSocketInfo = { - .name = const_cast(PEER_SESSION_NAME.c_str()), - .networkId = const_cast(REMOTE_DEV_ID.c_str()), - .pkgName = const_cast(DSCREEN_PKG_NAME_TEST.c_str()), + .name = const_cast(PEER_SESSION_NAME.c_str()), + .networkId = const_cast(REMOTE_DEV_ID.c_str()), + .pkgName = const_cast(DSCREEN_PKG_NAME_TEST.c_str()), .dataType = DATA_TYPE_BYTES }; ShutdownReason reason = SHUTDOWN_REASON_UNKNOWN; void *adapterData = nullptr; - uint32_t dataLen = *(reinterpret_cast(data)); StreamData *stream = nullptr; StreamData *ext = nullptr; StreamFrameInfo *info = nullptr; - unsigned int dataLen1 = *(reinterpret_cast(data)); std::shared_ptr adapter = std::make_shared(); adapter->sessListener_.OnBind(sessionId, peerSocketInfo); @@ -64,63 +66,68 @@ void SoftbusAdapterFuzzTest(const uint8_t* data, size_t size) adapter->CloseSoftbusSession(sessionId); } -void SoftbusOnBytesReceivedFuzzTest(const uint8_t* data, size_t size) +void SoftbusOnBytesReceivedFuzzTest(const uint8_t *data, size_t size) { - if ((data == nullptr) || (size < (sizeof(int32_t)))) { + if ((data == nullptr) || (size == 0)) { return; } - int32_t sessionId = *(reinterpret_cast(data)); + FuzzedDataProvider dataProvider(data, size); + int32_t sessionId = dataProvider.ConsumeIntegral(); + uint32_t dataLen = dataProvider.ConsumeIntegral(); void *adapterData = nullptr; - uint32_t dataLen = *(reinterpret_cast(data)); std::shared_ptr adapter = std::make_shared(); adapter->OnBytesReceived(sessionId, adapterData, dataLen); } -void SoftbusOnMessageReceivedFuzzTest(const uint8_t* data, size_t size) +void SoftbusOnMessageReceivedFuzzTest(const uint8_t *data, size_t size) { - if ((data == nullptr) || (size < (sizeof(int32_t)))) { + if ((data == nullptr) || (size == 0)) { return; } - int32_t sessionId = *(reinterpret_cast(data)); + FuzzedDataProvider dataProvider(data, size); + int32_t sessionId = dataProvider.ConsumeIntegral(); + unsigned int dataLen = dataProvider.ConsumeIntegral(); void *adapterData = nullptr; - unsigned int dataLen = *(reinterpret_cast(data)); std::shared_ptr adapter = std::make_shared(); adapter->OnMessageReceived(sessionId, adapterData, dataLen); } -void SoftbusOnSessionClosedFuzzTest(const uint8_t* data, size_t size) +void SoftbusOnSessionClosedFuzzTest(const uint8_t *data, size_t size) { - if ((data == nullptr) || (size < (sizeof(int32_t)))) { + if ((data == nullptr) || (size == 0)) { return; } - int32_t sessionId = *(reinterpret_cast(data)); + FuzzedDataProvider dataProvider(data, size); + int32_t sessionId = dataProvider.ConsumeIntegral(); std::shared_ptr adapter = std::make_shared(); ShutdownReason reason = SHUTDOWN_REASON_UNKNOWN; adapter->OnSoftbusSessionClosed(sessionId, reason); } -void SoftbusOnSessionOpenedFuzzTest(const uint8_t* data, size_t size) +void SoftbusOnSessionOpenedFuzzTest(const uint8_t *data, size_t size) { - if ((data == nullptr) || (size < (sizeof(int32_t)))) { + if ((data == nullptr) || (size == 0)) { return; } - int32_t sessionId = *(reinterpret_cast(data)); + FuzzedDataProvider dataProvider(data, size); + int32_t sessionId = dataProvider.ConsumeIntegral(); PeerSocketInfo peerSocketInfo = { - .name = const_cast(PEER_SESSION_NAME.c_str()), - .networkId = const_cast(REMOTE_DEV_ID.c_str()), - .pkgName = const_cast(DSCREEN_PKG_NAME_TEST.c_str()), + .name = const_cast(PEER_SESSION_NAME.c_str()), + .networkId = const_cast(REMOTE_DEV_ID.c_str()), + .pkgName = const_cast(DSCREEN_PKG_NAME_TEST.c_str()), .dataType = DATA_TYPE_BYTES }; std::shared_ptr adapter = std::make_shared(); adapter->OnSoftbusSessionOpened(sessionId, peerSocketInfo); } -void SoftbusOnStreamReceivedFuzzTest(const uint8_t* data, size_t size) +void SoftbusOnStreamReceivedFuzzTest(const uint8_t *data, size_t size) { - if ((data == nullptr) || (size < (sizeof(int32_t)))) { + if ((data == nullptr) || (size == 0)) { return; } - int32_t sessionId = *(reinterpret_cast(data)); + FuzzedDataProvider dataProvider(data, size); + int32_t sessionId = dataProvider.ConsumeIntegral(); StreamData *stream = nullptr; StreamData *ext = nullptr; StreamFrameInfo *info = nullptr; @@ -128,78 +135,82 @@ void SoftbusOnStreamReceivedFuzzTest(const uint8_t* data, size_t size) adapter->OnStreamReceived(sessionId, stream, ext, info); } -void SoftbusRegisterSoftbusListenerFuzzTest(const uint8_t* data, size_t size) +void SoftbusRegisterSoftbusListenerFuzzTest(const uint8_t *data, size_t size) { if ((data == nullptr) || (size == 0)) { return; } - std::shared_ptr listener = std::make_shared(); - std::string sessionName(reinterpret_cast(data), size); - std::string peerDevId(reinterpret_cast(data), size); + FuzzedDataProvider dataProvider(data, size); + std::string sessionName(dataProvider.ConsumeRandomLengthString()); + std::string peerDevId(dataProvider.ConsumeRandomLengthString()); std::shared_ptr softbusAdapter = std::make_shared(); + std::shared_ptr listener = std::make_shared(); (void)softbusAdapter->RegisterSoftbusListener(listener, sessionName, peerDevId); (void)softbusAdapter->UnRegisterSoftbusListener(sessionName, peerDevId); } -void SoftbusUnRegisterSoftbusListenerFuzzTest(const uint8_t* data, size_t size) +void SoftbusUnRegisterSoftbusListenerFuzzTest(const uint8_t *data, size_t size) { if ((data == nullptr) || (size == 0)) { return; } - std::string sessionName(reinterpret_cast(data), size); - std::string peerDevId(reinterpret_cast(data), size); + FuzzedDataProvider dataProvider(data, size); + std::string sessionName(dataProvider.ConsumeRandomLengthString()); + std::string peerDevId(dataProvider.ConsumeRandomLengthString()); std::shared_ptr softbusAdapter = std::make_shared(); (void)softbusAdapter->UnRegisterSoftbusListener(sessionName, peerDevId); } -void SoftbusCreateSoftbusSessionServerFuzzTest(const uint8_t* data, size_t size) +void SoftbusCreateSoftbusSessionServerFuzzTest(const uint8_t *data, size_t size) { if ((data == nullptr) || (size == 0)) { return; } - std::string pkgName(reinterpret_cast(data), size); - std::string sessionName(reinterpret_cast(data), size); - std::string peerDevId(reinterpret_cast(data), size); + FuzzedDataProvider dataProvider(data, size); + std::string sessionName(dataProvider.ConsumeRandomLengthString()); + std::string peerDevId(dataProvider.ConsumeRandomLengthString()); + std::string pkgName(dataProvider.ConsumeRandomLengthString()); std::shared_ptr softbusAdapter = std::make_shared(); (void)softbusAdapter->CreateSoftbusSessionServer(pkgName, sessionName, peerDevId); (void)softbusAdapter->RemoveSoftbusSessionServer(pkgName, sessionName, peerDevId); } -void SoftbusRemoveSoftbusSessionServerFuzzTest(const uint8_t* data, size_t size) +void SoftbusRemoveSoftbusSessionServerFuzzTest(const uint8_t *data, size_t size) { if ((data == nullptr) || (size == 0)) { return; } - std::string pkgName(reinterpret_cast(data), size); - std::string sessionName(reinterpret_cast(data), size); - std::string peerDevId(reinterpret_cast(data), size); + FuzzedDataProvider dataProvider(data, size); + std::string sessionName(dataProvider.ConsumeRandomLengthString()); + std::string peerDevId(dataProvider.ConsumeRandomLengthString()); + std::string pkgName(dataProvider.ConsumeRandomLengthString()); std::shared_ptr softbusAdapter = std::make_shared(); (void)softbusAdapter->RemoveSoftbusSessionServer(pkgName, sessionName, peerDevId); } -void SoftbusOpenSoftbusSessionFuzzTest(const uint8_t* data, size_t size) +void SoftbusOpenSoftbusSessionFuzzTest(const uint8_t *data, size_t size) { if ((data == nullptr) || (size == 0)) { return; } - std::string mySessionName(reinterpret_cast(data), size); - std::string peerSessionName(reinterpret_cast(data), size); - std::string peerDevId(reinterpret_cast(data), size); + FuzzedDataProvider dataProvider(data, size); + std::string mySessionName(dataProvider.ConsumeRandomLengthString()); + std::string peerSessionName(dataProvider.ConsumeRandomLengthString()); + std::string peerDevId(dataProvider.ConsumeRandomLengthString(size)); std::shared_ptr softbusAdapter = std::make_shared(); int32_t socketId = softbusAdapter->OpenSoftbusSession(mySessionName, peerSessionName, peerDevId); (void)softbusAdapter->CloseSoftbusSession(socketId); } - -} // namespace DistributedHardware -} // namespace OHOS +} // namespace DistributedHardware +} // namespace OHOS /* Fuzzer entry point */ -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { /* Run your code on data */ OHOS::DistributedHardware::SoftbusAdapterFuzzTest(data, size); -- Gitee