diff --git a/common/include/constants/distributed_camera_constants.h b/common/include/constants/distributed_camera_constants.h index 979c3eb5c62381691d361d63c891bb03c8c2e2c0..256713fb614fb0eee9622fb87b883a29197e1108 100644 --- a/common/include/constants/distributed_camera_constants.h +++ b/common/include/constants/distributed_camera_constants.h @@ -122,6 +122,10 @@ const int32_t HICOLLIE_INTERVAL_TIME_MS = 20 * 1000; const int32_t HICOLLIE_DELAY_TIME_MS = 5 * 1000; const size_t HICOLLIE_SLEEP_TIME_US = 5 * 1000 * 1000; +const int32_t CAMERA_META_DATA_ITEM_CAPACITY = 10; +const int32_t CAMERA_META_DATA_DATA_CAPACITY = 100; +const int32_t DCAMERA_UID = 3052; + const uint32_t DCAMERA_SHIFT_32 = 32; const uint32_t DCAMERA_SHIFT_24 = 24; const uint32_t DCAMERA_SHIFT_16 = 16; diff --git a/services/cameraservice/cameraoperator/client/src/callback/dcamera_session_callback.cpp b/services/cameraservice/cameraoperator/client/src/callback/dcamera_session_callback.cpp index 3f02cb6c5eb203f776743bf378e8235a21b015c5..4a532c72a263ecd575251e8de5ea3dc2592a3657 100644 --- a/services/cameraservice/cameraoperator/client/src/callback/dcamera_session_callback.cpp +++ b/services/cameraservice/cameraoperator/client/src/callback/dcamera_session_callback.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Copyright (c) 2021-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -55,13 +55,11 @@ void DCameraSessionCallback::OnFocusState(FocusState state) return; } - int32_t itemCapacity = 10; - int32_t dataCapacity = 100; - int32_t dataCount = 1; + int32_t dataCountStartNum = 1; uint8_t focusState = iter->second; std::shared_ptr cameraMetadata = - std::make_shared(itemCapacity, dataCapacity); - if (!cameraMetadata->addEntry(OHOS_CONTROL_FOCUS_STATE, &focusState, dataCount)) { + std::make_shared(CAMERA_META_DATA_ITEM_CAPACITY, CAMERA_META_DATA_DATA_CAPACITY); + if (!cameraMetadata->addEntry(OHOS_CONTROL_FOCUS_STATE, &focusState, dataCountStartNum)) { DHLOGE("cameraMetadata add entry failed"); return; } diff --git a/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h b/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h index beee7451019c4cd41af71c202827b1b44005bf3c..7e9b449193ceb27f26db8ae031c060cad104ec65 100644 --- a/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h +++ b/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h @@ -75,6 +75,7 @@ private: bool CheckDeviceSecurityLevel(const std::string &srcDeviceId, const std::string &dstDeviceId); int32_t GetDeviceSecurityLevel(const std::string &udid); std::string GetUdidByNetworkId(const std::string &networkId); + bool CheckPermission(); bool isInit_; int32_t sessionState_; diff --git a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp index a97b7cec9baf221a59fd3eda51ba0a42ed7a6d37..184995989d9b7fa95f1ddbb8628b9f8e2c80500f 100644 --- a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp +++ b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp @@ -37,6 +37,7 @@ #include "device_security_defines.h" #include "device_security_info.h" #include "idistributed_camera_source.h" +#include "ipc_skeleton.h" #include "json/json.h" #include "dcamera_low_latency.h" #include @@ -177,6 +178,10 @@ int32_t DCameraSinkController::DCameraNotify(std::shared_ptr& even int32_t DCameraSinkController::UpdateSettings(std::vector>& settings) { DHLOGI("UpdateSettings dhId: %s", GetAnonyString(dhId_).c_str()); + if (!CheckPermission()) { + DHLOGE("DCameraSinkController UpdateSettings fail, CheckPermission fail"); + return DCAMERA_WRONG_STATE; + } int32_t ret = operator_->UpdateSettings(settings); if (ret != DCAMERA_OK) { DHLOGE("UpdateSettings failed, dhId: %s, ret: %d", GetAnonyString(dhId_).c_str(), ret); @@ -197,6 +202,10 @@ int32_t DCameraSinkController::GetCameraInfo(std::shared_ptr& camIn int32_t DCameraSinkController::OpenChannel(std::shared_ptr& openInfo) { DHLOGI("OpenChannel dhId: %s", GetAnonyString(dhId_).c_str()); + if (!CheckPermission()) { + DHLOGE("DCameraSinkController OpenChannel fail, CheckPermission fail"); + return DCAMERA_WRONG_STATE; + } if (sessionState_ != DCAMERA_CHANNEL_STATE_DISCONNECTED) { DHLOGE("wrong state, dhId: %s, sessionState: %d", GetAnonyString(dhId_).c_str(), sessionState_); return DCAMERA_WRONG_STATE; @@ -664,6 +673,13 @@ std::string DCameraSinkController::GetUdidByNetworkId(const std::string &network return udid; } +bool DCameraSinkController::CheckPermission() +{ + DHLOGI("DCameraSinkController CheckPermission Start"); + auto uid = IPCSkeleton::GetCallingUid(); + return uid == DCAMERA_UID; +} + void DeviceInitCallback::OnRemoteDied() { DHLOGI("DeviceInitCallback OnRemoteDied");