From f2b6771b901f16e4edb4b57f6090339e2e57a498 Mon Sep 17 00:00:00 2001 From: w30042960 Date: Wed, 17 Apr 2024 15:48:38 +0800 Subject: [PATCH] moadify fuzz Signed-off-by: w30042960 --- .../sinkserviceclosechannel_fuzzer/BUILD.gn | 1 + .../sinkserviceclosechannel_fuzzer.cpp | 4 ++++ .../sinkservicegetcamerainfo_fuzzer/BUILD.gn | 1 + .../sinkservicegetcamerainfo_fuzzer.cpp | 4 ++++ .../sinkfuzztest/sinkserviceinitsink_fuzzer/BUILD.gn | 1 + .../sinkserviceinitsink_fuzzer.cpp | 9 ++++++--- .../sinkservicestopcapture_fuzzer/BUILD.gn | 1 + .../sinkservicestopcapture_fuzzer.cpp | 4 ++++ .../distributedcameramgr/dcamera_sink_controller.cpp | 10 +++++++++- 9 files changed, 31 insertions(+), 4 deletions(-) diff --git a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceclosechannel_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceclosechannel_fuzzer/BUILD.gn index 7a3d8a88..70ab23dd 100644 --- a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceclosechannel_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceclosechannel_fuzzer/BUILD.gn @@ -72,6 +72,7 @@ ohos_fuzztest("SinkServiceCloseChannelFuzzTest") { "cJSON:cjson", "c_utils:utils", "device_manager:devicemanagersdk", + "distributed_hardware_fwk:distributedhardwareutils", "drivers_interface_distributed_camera:libdistributed_camera_provider_proxy_1.0", "graphic_surface:surface", "hilog:libhilog", diff --git a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceclosechannel_fuzzer/sinkserviceclosechannel_fuzzer.cpp b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceclosechannel_fuzzer/sinkserviceclosechannel_fuzzer.cpp index c31ad954..ddbccb8b 100644 --- a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceclosechannel_fuzzer/sinkserviceclosechannel_fuzzer.cpp +++ b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceclosechannel_fuzzer/sinkserviceclosechannel_fuzzer.cpp @@ -18,6 +18,8 @@ #include #include +#include "dcamera_sink_controller.h" +#include "dcamera_sink_access_control.h" #include "dcamera_sink_callback.h" #include "distributed_camera_constants.h" #include "distributed_camera_sink_service.h" @@ -37,6 +39,8 @@ void SinkServiceCloseChannelFuzzTest(const uint8_t* data, size_t size) std::make_shared(DISTRIBUTED_HARDWARE_CAMERA_SINK_SA_ID, true); sptr sinkCallback(new DCameraSinkCallback()); std::shared_ptr sinkDevice = std::make_shared(dhId, sinkCallback); + sinkDevice->accessControl_ = std::make_shared(); + sinkDevice->controller_ = std::make_shared(sinkDevice->accessControl_, sinkCallback); sinkService->camerasMap_.emplace(dhId, sinkDevice); sinkService->CloseChannel(dhId); } diff --git a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicegetcamerainfo_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicegetcamerainfo_fuzzer/BUILD.gn index d61f2491..f823ef36 100644 --- a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicegetcamerainfo_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicegetcamerainfo_fuzzer/BUILD.gn @@ -71,6 +71,7 @@ ohos_fuzztest("SinkServiceGetCameraInfoFuzzTest") { "cJSON:cjson", "c_utils:utils", "device_manager:devicemanagersdk", + "distributed_hardware_fwk:distributedhardwareutils", "drivers_interface_distributed_camera:libdistributed_camera_provider_proxy_1.0", "graphic_surface:surface", "hilog:libhilog", diff --git a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicegetcamerainfo_fuzzer/sinkservicegetcamerainfo_fuzzer.cpp b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicegetcamerainfo_fuzzer/sinkservicegetcamerainfo_fuzzer.cpp index 430930b0..b602abfb 100644 --- a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicegetcamerainfo_fuzzer/sinkservicegetcamerainfo_fuzzer.cpp +++ b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicegetcamerainfo_fuzzer/sinkservicegetcamerainfo_fuzzer.cpp @@ -18,6 +18,8 @@ #include #include +#include "dcamera_sink_controller.h" +#include "dcamera_sink_access_control.h" #include "dcamera_sink_callback.h" #include "distributed_camera_constants.h" #include "distributed_camera_sink_service.h" @@ -39,6 +41,8 @@ void SinkServiceGetCameraInfoFuzzTest(const uint8_t* data, size_t size) std::make_shared(DISTRIBUTED_HARDWARE_CAMERA_SINK_SA_ID, true); sptr sinkCallback(new DCameraSinkCallback()); std::shared_ptr sinkDevice = std::make_shared(dhId, sinkCallback); + sinkDevice->accessControl_ = std::make_shared(); + sinkDevice->controller_ = std::make_shared(sinkDevice->accessControl_, sinkCallback); sinkService->camerasMap_.emplace(dhId, sinkDevice); sinkService->GetCameraInfo(dhId, cameraInfo); sinkService->GetCamIds(); diff --git a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceinitsink_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceinitsink_fuzzer/BUILD.gn index f3c08bc7..3ec44db3 100644 --- a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceinitsink_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceinitsink_fuzzer/BUILD.gn @@ -71,6 +71,7 @@ ohos_fuzztest("SinkServiceInitSinkFuzzTest") { "cJSON:cjson", "c_utils:utils", "device_manager:devicemanagersdk", + "distributed_hardware_fwk:distributedhardwareutils", "drivers_interface_distributed_camera:libdistributed_camera_provider_proxy_1.0", "graphic_surface:surface", "hilog:libhilog", diff --git a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceinitsink_fuzzer/sinkserviceinitsink_fuzzer.cpp b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceinitsink_fuzzer/sinkserviceinitsink_fuzzer.cpp index b245040d..59e3dbbf 100644 --- a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceinitsink_fuzzer/sinkserviceinitsink_fuzzer.cpp +++ b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkserviceinitsink_fuzzer/sinkserviceinitsink_fuzzer.cpp @@ -18,6 +18,8 @@ #include #include +#include "dcamera_sink_controller.h" +#include "dcamera_sink_access_control.h" #include "dcamera_sink_callback.h" #include "distributed_camera_constants.h" #include "distributed_camera_sink_service.h" @@ -33,14 +35,15 @@ void SinkServiceInitSinkFuzzTest(const uint8_t* data, size_t size) } std::string param(reinterpret_cast(data), size); + std::string dhId = "1"; std::shared_ptr sinkService = std::make_shared(DISTRIBUTED_HARDWARE_CAMERA_SINK_SA_ID, true); sptr sinkCallback(new DCameraSinkCallback()); - sinkService->registerToService_ = false; + std::shared_ptr sinkDevice = std::make_shared(dhId, sinkCallback); + sinkDevice->accessControl_ = std::make_shared(); + sinkDevice->controller_ = std::make_shared(sinkDevice->accessControl_, sinkCallback); sinkService->InitSink(param, sinkCallback); - sinkService->Init(); - sinkService->OnStop(); } } } diff --git a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicestopcapture_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicestopcapture_fuzzer/BUILD.gn index 87869524..eaa3645b 100644 --- a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicestopcapture_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicestopcapture_fuzzer/BUILD.gn @@ -71,6 +71,7 @@ ohos_fuzztest("SinkServiceStopCaptureFuzzTest") { "cJSON:cjson", "c_utils:utils", "device_manager:devicemanagersdk", + "distributed_hardware_fwk:distributedhardwareutils", "drivers_interface_distributed_camera:libdistributed_camera_provider_proxy_1.0", "graphic_surface:surface", "hilog:libhilog", diff --git a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicestopcapture_fuzzer/sinkservicestopcapture_fuzzer.cpp b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicestopcapture_fuzzer/sinkservicestopcapture_fuzzer.cpp index 3c764e00..5dce7311 100644 --- a/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicestopcapture_fuzzer/sinkservicestopcapture_fuzzer.cpp +++ b/interfaces/inner_kits/native_cpp/test/sinkfuzztest/sinkservicestopcapture_fuzzer/sinkservicestopcapture_fuzzer.cpp @@ -18,6 +18,8 @@ #include #include +#include "dcamera_sink_controller.h" +#include "dcamera_sink_access_control.h" #include "dcamera_sink_callback.h" #include "distributed_camera_constants.h" #include "distributed_camera_sink_service.h" @@ -37,6 +39,8 @@ void SinkServiceStopCaptureFuzzTest(const uint8_t* data, size_t size) std::make_shared(DISTRIBUTED_HARDWARE_CAMERA_SINK_SA_ID, true); sptr sinkCallback(new DCameraSinkCallback()); std::shared_ptr sinkDevice = std::make_shared(dhId, sinkCallback); + sinkDevice->accessControl_ = std::make_shared(); + sinkDevice->controller_ = std::make_shared(sinkDevice->accessControl_, sinkCallback); sinkService->camerasMap_.emplace(dhId, sinkDevice); sinkService->StopCapture(dhId); diff --git a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp index dc8bbd2b..8e524a28 100644 --- a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp +++ b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp @@ -85,6 +85,9 @@ int32_t DCameraSinkController::StopCapture() { DHLOGI("StopCapture dhId: %{public}s", GetAnonyString(dhId_).c_str()); std::lock_guard autoLock(captureLock_); + if (operator_ == nullptr) { + return DCAMERA_BAD_VALUE; + } int32_t ret = operator_->StopCapture(); if (ret != DCAMERA_OK) { DHLOGE("client stop capture failed, dhId: %{public}s, ret: %{public}d", @@ -92,7 +95,9 @@ int32_t DCameraSinkController::StopCapture() DCameraNotifyInner(DCAMERA_MESSAGE, DCAMERA_EVENT_DEVICE_ERROR, std::string("operator stop capture failed.")); return ret; } - + if (output_ == nullptr) { + return DCAMERA_BAD_VALUE; + } ret = output_->StopCapture(); if (ret != DCAMERA_OK) { DHLOGE("output stop capture failed, dhId: %{public}s, ret: %{public}d", @@ -264,6 +269,9 @@ int32_t DCameraSinkController::CloseChannel() DCameraLowLatency::GetInstance().DisableLowLatency(); DCameraSinkServiceIpc::GetInstance().DeleteSourceRemoteCamSrv(srcDevId_); srcDevId_.clear(); + if (channel_ == nullptr) { + return DCAMERA_BAD_VALUE; + } int32_t ret = channel_->ReleaseSession(); if (ret != DCAMERA_OK) { DHLOGE("DCameraSinkController release channel failed, dhId: %{public}s, ret: %{public}d", -- Gitee