From d822fd04582aecfdae13e759652712b75ecce415 Mon Sep 17 00:00:00 2001 From: wangchaole Date: Fri, 30 Sep 2022 14:10:51 +0800 Subject: [PATCH] fix: fuzz test repair Signed-off-by: wangchaole --- common/src/utils/dcamera_sa_process_state.cpp | 4 +-- .../camera_sink/src/dcamera_sink_handler.cpp | 25 +++++++++++++------ .../src/dcamera_source_handler.cpp | 24 ++++++++++++------ 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/common/src/utils/dcamera_sa_process_state.cpp b/common/src/utils/dcamera_sa_process_state.cpp index cfdd908f..a63f158b 100644 --- a/common/src/utils/dcamera_sa_process_state.cpp +++ b/common/src/utils/dcamera_sa_process_state.cpp @@ -41,7 +41,7 @@ void SetSinkProcessExit() return; } DHLOGI("exit sa process success."); - exit(0); + _Exit(0); } void SetSourceProcessExit() @@ -54,7 +54,7 @@ void SetSourceProcessExit() return; } DHLOGI("exit sa process success."); - exit(0); + _Exit(0); } } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler.cpp b/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler.cpp index 704a454b..9bbfa7a4 100644 --- a/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler.cpp +++ b/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler.cpp @@ -44,6 +44,13 @@ DCameraSinkHandler::~DCameraSinkHandler() int32_t DCameraSinkHandler::InitSink(const std::string& params) { DHLOGI("DCameraSinkHandler::InitSink"); + { + std::lock_guard autoLock(producerMutex_); + if (state_ == DCAMERA_SA_STATE_START) { + return DCAMERA_OK; + } + } + sptr sm = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); if (sm == nullptr) { DHLOGE("GetSourceLocalCamSrv GetSystemAbilityManager failed"); @@ -53,17 +60,19 @@ int32_t DCameraSinkHandler::InitSink(const std::string& params) sptr loadCallback = new DCameraSinkLoadCallback(params); int32_t ret = sm->LoadSystemAbility(DISTRIBUTED_HARDWARE_CAMERA_SINK_SA_ID, loadCallback); if (ret != DCAMERA_OK) { - DHLOGE("systemAbilityId: %d load filed,result code: %d.", DISTRIBUTED_HARDWARE_CAMERA_SINK_SA_ID, ret); + DHLOGE("systemAbilityId: %d load filed, result code: %d.", DISTRIBUTED_HARDWARE_CAMERA_SINK_SA_ID, ret); return DCAMERA_INIT_ERR; } uint32_t interval = 1; - std::unique_lock lock(producerMutex_); - producerCon_.wait_for(lock, std::chrono::minutes(interval), [this] { - return (this->state_ == DCAMERA_SA_STATE_START); - }); - if (state_ == DCAMERA_SA_STATE_STOP) { - DHLOGE("SinkSA Start failed!"); - return DCAMERA_INIT_ERR; + { + std::unique_lock lock(producerMutex_); + producerCon_.wait_for(lock, std::chrono::minutes(interval), [this] { + return (this->state_ == DCAMERA_SA_STATE_START); + }); + if (state_ == DCAMERA_SA_STATE_STOP) { + DHLOGE("SinkSA Start failed!"); + return DCAMERA_INIT_ERR; + } } DHLOGI("DCameraSinkHandler InitSink end, result: %d", ret); return DCAMERA_OK; diff --git a/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler.cpp b/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler.cpp index d2ab0dfd..d14242d8 100644 --- a/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler.cpp +++ b/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler.cpp @@ -44,6 +44,12 @@ DCameraSourceHandler::~DCameraSourceHandler() int32_t DCameraSourceHandler::InitSource(const std::string& params) { DHLOGI("DCameraSourceHandler InitSource Start"); + { + std::lock_guard autoLock(producerMutex_); + if (state_ == DCAMERA_SA_STATE_START) { + return DCAMERA_OK; + } + } sptr sm = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); if (sm == nullptr) { DHLOGE("GetSourceLocalCamSrv GetSystemAbilityManager failed"); @@ -53,17 +59,19 @@ int32_t DCameraSourceHandler::InitSource(const std::string& params) sptr loadCallback = new DCameraSourceLoadCallback(params); int32_t ret = sm->LoadSystemAbility(DISTRIBUTED_HARDWARE_CAMERA_SOURCE_SA_ID, loadCallback); if (ret != ERR_OK) { - DHLOGE("systemAbilityId: %d load failed,result code: %d.", DISTRIBUTED_HARDWARE_CAMERA_SINK_SA_ID, ret); + DHLOGE("systemAbilityId: %d load failed, result code: %d.", DISTRIBUTED_HARDWARE_CAMERA_SOURCE_SA_ID, ret); return DCAMERA_INIT_ERR; } uint32_t interval = 1; - std::unique_lock lock(producerMutex_); - producerCon_.wait_for(lock, std::chrono::minutes(interval), [this] { - return (this->state_ == DCAMERA_SA_STATE_START); - }); - if (state_ == DCAMERA_SA_STATE_STOP) { - DHLOGE("SourceSA Start failed!"); - return DCAMERA_INIT_ERR; + { + std::unique_lock lock(producerMutex_); + producerCon_.wait_for(lock, std::chrono::minutes(interval), [this] { + return (this->state_ == DCAMERA_SA_STATE_START); + }); + if (state_ == DCAMERA_SA_STATE_STOP) { + DHLOGE("SourceSA Start failed!"); + return DCAMERA_INIT_ERR; + } } DHLOGI("DCameraSourceHandler InitSource end, result: %d", ret); return DCAMERA_OK; -- Gitee