diff --git a/common/src/utils/data_buffer.cpp b/common/src/utils/data_buffer.cpp index 24aed42df898c305e69b6fd4e846218f19fbed55..4d10a674c22595765cc0ff6e03bb0dea1e34800c 100644 --- a/common/src/utils/data_buffer.cpp +++ b/common/src/utils/data_buffer.cpp @@ -21,7 +21,7 @@ namespace OHOS { namespace DistributedHardware { DataBuffer::DataBuffer(size_t capacity) { - if (capacity != 0) { + if (capacity != 0 && capacity <= DCAMERA_MAX_RECV_DATA_LEN) { data_ = new uint8_t[capacity] {0}; if (data_ != nullptr) { capacity_ = capacity; 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 18b1f6ef1de2edd4e02dd895f4d90492b7fc281d..0d2c6ba863d2d5a5e411212ae107e7ec581511ce 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 @@ -40,7 +40,7 @@ DCameraSinkHandler::DCameraSinkHandler() { DHLOGI("DCameraSinkHandler ctor."); if (!dCameraSinkCallback_) { - dCameraSinkCallback_ = new DCameraSinkCallback(); + dCameraSinkCallback_ = sptr(new DCameraSinkCallback()); } } diff --git a/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler_ipc.cpp b/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler_ipc.cpp index f18e120c2131b755ae45143fb1a5546b6112005b..690abfbca07f4afdc81079bebbfacd4c6b8088b8 100644 --- a/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler_ipc.cpp +++ b/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler_ipc.cpp @@ -48,7 +48,7 @@ void DCameraSinkHandlerIpc::Init() DHLOGI("DCameraSinkHandlerIpc has already init"); return; } - sinkLocalRecipient_ = new SinkLocalRecipient(); + sinkLocalRecipient_ = sptr(new SinkLocalRecipient()); isInit_ = true; DHLOGI("End"); } 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 13c002d3875eb84c2cef5275b2d7c42865321414..ca20af1380e26b2ff9b90d0007ee761540f239d0 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 @@ -33,7 +33,7 @@ IMPLEMENT_SINGLE_INSTANCE(DCameraSourceHandler); DCameraSourceHandler::DCameraSourceHandler() { DHLOGI("DCameraSourceHandler construct."); - callback_ = new DCameraSourceCallback(); + callback_ = sptr(new DCameraSourceCallback()); } DCameraSourceHandler::~DCameraSourceHandler() diff --git a/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler_ipc.cpp b/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler_ipc.cpp index 36317d843ef941ed110a902c14b0299cd0a0be32..fe9911c5a47177f7fd4e6b1287fb5c4f148a6bd2 100644 --- a/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler_ipc.cpp +++ b/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler_ipc.cpp @@ -48,7 +48,7 @@ void DCameraSourceHandlerIpc::Init() DHLOGI("DCameraSourceHandlerIpc has already init"); return; } - sourceLocalRecipient_ = new SourceLocalRecipient(); + sourceLocalRecipient_ = sptr(new SourceLocalRecipient()); isInit_ = true; DHLOGI("End"); } diff --git a/interfaces/inner_kits/native_cpp/test/unittest/common/camera_sink/dcamera_sink_handler_test.cpp b/interfaces/inner_kits/native_cpp/test/unittest/common/camera_sink/dcamera_sink_handler_test.cpp index cdec29242af56486a6ff2e4b532ddfd7213933a1..193f4f608dae2dc531950a2854f1d7db587444cc 100644 --- a/interfaces/inner_kits/native_cpp/test/unittest/common/camera_sink/dcamera_sink_handler_test.cpp +++ b/interfaces/inner_kits/native_cpp/test/unittest/common/camera_sink/dcamera_sink_handler_test.cpp @@ -208,7 +208,7 @@ HWTEST_F(DCameraSinkHandlerTest, dcamera_sink_handler_test_006, TestSize.Level1) HWTEST_F(DCameraSinkHandlerTest, dcamera_sink_handler_test_007, TestSize.Level1) { int32_t ret = DCameraSinkHandler::GetInstance().ReleaseSink(); - EXPECT_EQ(DCAMERA_BAD_VALUE, ret); + EXPECT_EQ(DCAMERA_OK, ret); } /** diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp index ea2ea60742ccba39e967f3ee064659cc97f2f5e8..5a13933f8a58f3b35bd5553448556842a6691b5e 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp @@ -465,7 +465,8 @@ int32_t DCameraClient::CreatePhotoOutput(std::shared_ptr& in "%{public}d, isCapture: %{public}d", GetAnonyString(cameraId_).c_str(), info->width_, info->height_, info->format_, info->streamType_, info->isCapture_); photoSurface_ = IConsumerSurface::Create(); - photoListener_ = new DCameraPhotoSurfaceListener(photoSurface_, resultCallback_); + photoListener_ = sptr( + new DCameraPhotoSurfaceListener(photoSurface_, resultCallback_)); photoSurface_->RegisterConsumerListener((sptr &)photoListener_); CameraStandard::CameraFormat photoFormat = ConvertToCameraFormat(info->format_); CameraStandard::Size photoSize = {info->width_, info->height_}; diff --git a/services/cameraservice/sinkservice/include/distributedcamera/dcamera_sink_hidumper.h b/services/cameraservice/sinkservice/include/distributedcamera/dcamera_sink_hidumper.h index a2ede462cfed37968b9cf936458327aa045b9d8a..5203e2557c7fafd84948a3f158d5d2f1b8228ca5 100644 --- a/services/cameraservice/sinkservice/include/distributedcamera/dcamera_sink_hidumper.h +++ b/services/cameraservice/sinkservice/include/distributedcamera/dcamera_sink_hidumper.h @@ -61,6 +61,7 @@ private: private: CameraDumpInfo camDumpInfo_; + const size_t DUMP_MAX_SIZE = 10 * 1024; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/cameraservice/sinkservice/src/distributedcamera/dcamera_sink_hidumper.cpp b/services/cameraservice/sinkservice/src/distributedcamera/dcamera_sink_hidumper.cpp index 2553d16f3f82485e2ea083c7411057499977ae85..ba63bcdc491d669dc2a993e3d94fef025a7f28d8 100644 --- a/services/cameraservice/sinkservice/src/distributedcamera/dcamera_sink_hidumper.cpp +++ b/services/cameraservice/sinkservice/src/distributedcamera/dcamera_sink_hidumper.cpp @@ -51,6 +51,10 @@ bool DcameraSinkHidumper::Dump(const std::vector& args, std::string { result.clear(); int32_t argsSize = static_cast(args.size()); + if (argsSize > DUMP_MAX_SIZE) { + DHLOGE("DcameraSinkHidumper Dump args.size() is invalid"); + return false; + } DHLOGI("DcameraSinkHidumper Dump args.size():%{public}d.", argsSize); if (args.empty()) { ShowHelp(result); diff --git a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_service_ipc.cpp b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_service_ipc.cpp index 7ad8a4de572f2b35692744a5a76d45fed417a033..25a286f9564ee84c9ada04af85c12edd703f713a 100644 --- a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_service_ipc.cpp +++ b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_service_ipc.cpp @@ -46,7 +46,7 @@ void DCameraSinkServiceIpc::Init() DHLOGI("DCameraSinkServiceIpc has already init"); return; } - sourceRemoteRecipient_ = new SourceRemoteRecipient(); + sourceRemoteRecipient_ = sptr(new SourceRemoteRecipient()); isInit_ = true; DHLOGI("DCameraSinkServiceIpc Init End"); } diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/dcamera_sink_callback_proxy_test.cpp b/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/dcamera_sink_callback_proxy_test.cpp index b023c3587b0036585f9a78782e8ea5fd2a7e2ebf..7ea1c2a3f352762ad4bb9c165c608126f8f9cd54 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/dcamera_sink_callback_proxy_test.cpp +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/dcamera_sink_callback_proxy_test.cpp @@ -69,14 +69,6 @@ HWTEST_F(DcameraSinkCallbackProxyTest, dcamera_sink_callback_proxy_test_001, Tes sptr remoteObject = samgr->GetSystemAbility(DISTRIBUTED_HARDWARE_CAMERA_SINK_SA_ID); sptr callbackProxy(new DCameraSinkCallbackProxy(remoteObject)); EXPECT_EQ(false, callbackProxy == nullptr); - - ResourceEventType type = ResourceEventType::EVENT_TYPE_QUERY_RESOURCE; - const std::string subtype = ""; - const std::string networkId = ""; - bool isSensitive = 0; - bool isSameAccout = 0; - int32_t ret = callbackProxy->OnNotifyResourceInfo(type, subtype, networkId, isSensitive, isSameAccout); - EXPECT_EQ(DCAMERA_BAD_VALUE, ret); } } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/services/cameraservice/sourceservice/include/distributedcamera/dcamera_source_hidumper.h b/services/cameraservice/sourceservice/include/distributedcamera/dcamera_source_hidumper.h index 033a781017e383ac3b032335c4a249aacc951aa0..1139cd4adb151719e6ca5e5f807284648612110c 100644 --- a/services/cameraservice/sourceservice/include/distributedcamera/dcamera_source_hidumper.h +++ b/services/cameraservice/sourceservice/include/distributedcamera/dcamera_source_hidumper.h @@ -69,6 +69,7 @@ private: private: CameraDumpInfo camDumpInfo_; + const size_t DUMP_MAX_SIZE = 10 * 1024; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/cameraservice/sourceservice/src/distributedcamera/dcamera_source_hidumper.cpp b/services/cameraservice/sourceservice/src/distributedcamera/dcamera_source_hidumper.cpp index 92788bed833ff1cfe5250c0e1e8032816edd411b..7205df5e6a542452afbbc792abcb9da6d945fa0b 100644 --- a/services/cameraservice/sourceservice/src/distributedcamera/dcamera_source_hidumper.cpp +++ b/services/cameraservice/sourceservice/src/distributedcamera/dcamera_source_hidumper.cpp @@ -64,6 +64,10 @@ bool DcameraSourceHidumper::Dump(const std::vector& args, std::stri { result.clear(); int32_t argsSize = static_cast(args.size()); + if (argsSize > DUMP_MAX_SIZE) { + DHLOGE("DcameraSourceHidumper Dump args.size() is invalid"); + return false; + } DHLOGI("DcameraSourceHidumper Dump args.size():%{public}d.", argsSize); if (args.empty()) { ShowHelp(result); diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp index c3c3cc1d4f7ef8e308916869ae92f57f0e3fd9db..15805407a5c09101e69692b59f00d4c2f6bd360b 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp @@ -84,7 +84,8 @@ int32_t DCameraSourceDev::InitDCameraSourceDev() stateMachine_->UpdateState(DCAMERA_STATE_INIT); controller_ = std::make_shared(devId_, dhId_, stateMachine_, cameraSourceDev); input_ = std::make_shared(devId_, dhId_, cameraSourceDev); - hdiCallback_ = new (std::nothrow) DCameraProviderCallbackImpl(devId_, dhId_, cameraSourceDev); + hdiCallback_ = sptr( + new (std::nothrow) DCameraProviderCallbackImpl(devId_, dhId_, cameraSourceDev)); if (hdiCallback_ == nullptr) { DHLOGE("DCameraSourceDev InitDCameraSourceDev failed, hdiCallback is null."); return DCAMERA_BAD_VALUE; diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_service_ipc.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_service_ipc.cpp index 79de79dc254f299b35a8b15f6ef8f8745bff501d..ad2aec0685e666ba827e2354a93c11a7fce8c3b5 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_service_ipc.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_service_ipc.cpp @@ -46,7 +46,7 @@ void DCameraSourceServiceIpc::Init() DHLOGI("DCameraSourceServiceIpc has already init"); return; } - sinkRemoteRecipient_ = new SinkRemoteRecipient(); + sinkRemoteRecipient_ = sptr(new SinkRemoteRecipient()); isInit_ = true; DHLOGI("End"); } diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcameracontrol/dcamera_source_controller.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcameracontrol/dcamera_source_controller.cpp index 7f75d017c15f24cd6db06ceb84d019afd0f8c582..3c5ed9aa4d6ae51dbf3c1451fd6d09ca3e1714af 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcameracontrol/dcamera_source_controller.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcameracontrol/dcamera_source_controller.cpp @@ -48,7 +48,7 @@ DCameraSourceController::DCameraSourceController(std::string devId, std::string DHLOGI("DCameraSourceController create devId: %{public}s dhId: %{public}s", GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str()); isInit = false; - cameraHdiRecipient_ = new DCameraHdiRecipient(); + cameraHdiRecipient_ = sptr(new DCameraHdiRecipient()); } DCameraSourceController::~DCameraSourceController() diff --git a/services/cameraservice/sourceservice/test/unittest/common/distributedcameramgr/dcamera_stream_data_process_producer_test.cpp b/services/cameraservice/sourceservice/test/unittest/common/distributedcameramgr/dcamera_stream_data_process_producer_test.cpp index e577ecd0fd5ada3e424fc89dd9895ff518297e4e..f5308785b17aa6e1c9e8416aa2ed2e248116dc10 100644 --- a/services/cameraservice/sourceservice/test/unittest/common/distributedcameramgr/dcamera_stream_data_process_producer_test.cpp +++ b/services/cameraservice/sourceservice/test/unittest/common/distributedcameramgr/dcamera_stream_data_process_producer_test.cpp @@ -212,11 +212,11 @@ HWTEST_F(DCameraStreamDataProcessProducerTest, dcamera_stream_data_process_produ sharedMemory.bufferHandle_ = nullptr; int32_t ret = streamProcess1->CheckSharedMemory(sharedMemory, buffer); ret = streamProcess2->CheckSharedMemory(sharedMemory, buffer); - sharedMemory.bufferHandle_ = new NativeBuffer(); + sharedMemory.bufferHandle_ = sptr(new NativeBuffer()); ret = streamProcess1->CheckSharedMemory(sharedMemory, buffer); ret = streamProcess2->CheckSharedMemory(sharedMemory, buffer); BufferHandle *bufferHandle = new BufferHandle(); - sharedMemory.bufferHandle_ = new NativeBuffer(bufferHandle); + sharedMemory.bufferHandle_ = sptr(new NativeBuffer(bufferHandle)); ret = streamProcess1->CheckSharedMemory(sharedMemory, buffer); ret = streamProcess2->CheckSharedMemory(sharedMemory, buffer); DHBase dhBase;