From e6ecffb7042697f5917f828661f4d52b9b8d597a Mon Sep 17 00:00:00 2001 From: chen0088 Date: Tue, 5 Dec 2023 20:19:38 +0800 Subject: [PATCH] fix:add abnormal protection Signed-off-by: chen0088 --- .../cameraoperator/client/src/dcamera_client.cpp | 8 ++++++++ .../distributed_camera_sink_service.cpp | 15 +++++++++++++++ .../dcamera_sink_controller.cpp | 14 ++++++++++++-- .../src/distributedcameramgr/dcamera_sink_dev.cpp | 12 ++++++++++++ 4 files changed, 47 insertions(+), 2 deletions(-) diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp index 38e7a961..dbb77a26 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp @@ -648,6 +648,10 @@ void DCameraClient::SetPhotoCaptureLocation(const std::shared_ptrStop(); if (ret != DCAMERA_OK) { DHLOGE("PauseCapture captureSession stop failed, cameraId: %s, ret: %d", @@ -658,6 +662,10 @@ int32_t DCameraClient::PauseCapture() int32_t DCameraClient::ResumeCapture() { + if (captureSession_ == nullptr) { + DHLOGE("ResumeCapture captureSession_ is nullptr."); + return DCAMERA_BAD_VALUE; + } int32_t ret = captureSession_->Start(); if (ret != DCAMERA_OK) { DHLOGE("ResumeCapture captureSession Start failed, cameraId: %s, ret: %d", diff --git a/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_service.cpp b/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_service.cpp index 5010c572..39bfdd5e 100644 --- a/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_service.cpp +++ b/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_service.cpp @@ -383,9 +383,14 @@ int32_t DistributedCameraSinkService::PauseDistributedHardware(const std::string for (auto iter = camerasMap_.begin(); iter != camerasMap_.end(); iter++) { if (IsCurSinkDev(iter->second)) { sinkDevice = iter->second; + break; } } } + if (sinkDevice == nullptr) { + DHLOGE("PauseDistributedHardware sinkDevice is nullptr."); + return DCAMERA_BAD_VALUE; + } int32_t ret = sinkDevice->PauseDistributedHardware(networkId); if (ret != DCAMERA_OK) { @@ -405,9 +410,14 @@ int32_t DistributedCameraSinkService::ResumeDistributedHardware(const std::strin for (auto iter = camerasMap_.begin(); iter != camerasMap_.end(); iter++) { if (IsCurSinkDev(iter->second)) { sinkDevice = iter->second; + break; } } } + if (sinkDevice == nullptr) { + DHLOGE("ResumeDistributedHardware sinkDevice is nullptr."); + return DCAMERA_BAD_VALUE; + } int32_t ret = sinkDevice->ResumeDistributedHardware(networkId); if (ret != DCAMERA_OK) { @@ -427,9 +437,14 @@ int32_t DistributedCameraSinkService::StopDistributedHardware(const std::string for (auto iter = camerasMap_.begin(); iter != camerasMap_.end(); iter++) { if (IsCurSinkDev(iter->second)) { sinkDevice = iter->second; + break; } } } + if (sinkDevice == nullptr) { + DHLOGE("StopDistributedHardware sinkDevice is nullptr."); + return DCAMERA_BAD_VALUE; + } int32_t ret = sinkDevice->StopDistributedHardware(networkId); if (ret != DCAMERA_OK) { diff --git a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp index 7ef3332b..c9962f3a 100644 --- a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp +++ b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp @@ -572,6 +572,10 @@ int32_t DCameraSinkController::PauseDistributedHardware(const std::string &netwo DHLOGE("networkId is empty"); return DCAMERA_BAD_VALUE; } + if (operator_ == nullptr) { + DHLOGE("operator_ is nullptr."); + return DCAMERA_BAD_VALUE; + } int32_t ret = operator_->PauseCapture(); if (ret != DCAMERA_OK) { DHLOGE("Pause distributed hardware failed, dhId: %s, ret: %d", GetAnonyString(dhId_).c_str(), ret); @@ -586,6 +590,10 @@ int32_t DCameraSinkController::ResumeDistributedHardware(const std::string &netw DHLOGE("networkId is empty"); return DCAMERA_BAD_VALUE; } + if (operator_ == nullptr) { + DHLOGE("operator_ is nullptr."); + return DCAMERA_BAD_VALUE; + } int32_t ret = operator_->ResumeCapture(); if (ret != DCAMERA_OK) { DHLOGE("Resume distributed hardware failed, dhId: %s, ret: %d", GetAnonyString(dhId_).c_str(), ret); @@ -607,7 +615,8 @@ int32_t DCameraSinkController::StopDistributedHardware(const std::string &networ bool DCameraSinkController::CheckDeviceSecurityLevel(const std::string &srcDeviceId, const std::string &dstDeviceId) { - DHLOGD("CheckDeviceSecurityLevel srcDeviceId %s, dstDeviceId %s.", srcDeviceId.c_str(), dstDeviceId.c_str()); + DHLOGD("CheckDeviceSecurityLevel srcDeviceId %s, dstDeviceId %s.", + GetAnonyString(srcDeviceId).c_str(), GetAnonyString(dstDeviceId).c_str()); std::string srcUdid = GetUdidByNetworkId(srcDeviceId); if (srcUdid.empty()) { DHLOGE("src udid is empty"); @@ -618,7 +627,8 @@ bool DCameraSinkController::CheckDeviceSecurityLevel(const std::string &srcDevic DHLOGE("dst udid is empty"); return false; } - DHLOGD("CheckDeviceSecurityLevel srcUdid %s, dstUdid %s.", srcUdid.c_str(), dstUdid.c_str()); + DHLOGD("CheckDeviceSecurityLevel srcUdid %s, dstUdid %s.", + GetAnonyString(srcUdid).c_str(), GetAnonyString(dstUdid).c_str()); int32_t srcDeviceSecurityLevel = GetDeviceSecurityLevel(srcUdid); int32_t dstDeviceSecurityLevel = GetDeviceSecurityLevel(dstUdid); DHLOGI("srcDeviceSecurityLevel is %d, dstDeviceSecurityLevel is %d.", diff --git a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_dev.cpp b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_dev.cpp index ade1ba42..938eba6d 100644 --- a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_dev.cpp +++ b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_dev.cpp @@ -168,6 +168,10 @@ int32_t DCameraSinkDev::PauseDistributedHardware(const std::string &networkId) DHLOGE("networkId is empty"); return DCAMERA_BAD_VALUE; } + if (controller_ == nullptr) { + DHLOGE("controller_ is nullptr."); + return DCAMERA_BAD_VALUE; + } return controller_->PauseDistributedHardware(networkId); } @@ -179,6 +183,10 @@ int32_t DCameraSinkDev::ResumeDistributedHardware(const std::string &networkId) DHLOGE("networkId is empty"); return DCAMERA_BAD_VALUE; } + if (controller_ == nullptr) { + DHLOGE("controller_ is nullptr."); + return DCAMERA_BAD_VALUE; + } return controller_->ResumeDistributedHardware(networkId); } @@ -190,6 +198,10 @@ int32_t DCameraSinkDev::StopDistributedHardware(const std::string &networkId) DHLOGE("networkId is empty"); return DCAMERA_BAD_VALUE; } + if (controller_ == nullptr) { + DHLOGE("controller_ is nullptr."); + return DCAMERA_BAD_VALUE; + } return controller_->StopDistributedHardware(networkId); } -- Gitee