diff --git a/interfaces/inner_kits/native_cpp/camera_sink/include/distributed_camera_sink_proxy.h b/interfaces/inner_kits/native_cpp/camera_sink/include/distributed_camera_sink_proxy.h index c987e71b24f5e7e6055401ece9b2bd46df7a9c41..1f798e948936f9de05d4d1acd6d48638d78d28f0 100644 --- a/interfaces/inner_kits/native_cpp/camera_sink/include/distributed_camera_sink_proxy.h +++ b/interfaces/inner_kits/native_cpp/camera_sink/include/distributed_camera_sink_proxy.h @@ -44,6 +44,9 @@ public: private: static inline BrokerDelegator delegator_; + + const size_t DID_MAX_SIZE = 256; + const size_t PARAM_MAX_SIZE = 50 * 1024 * 1024; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/interfaces/inner_kits/native_cpp/camera_sink/src/distributed_camera_sink_proxy.cpp b/interfaces/inner_kits/native_cpp/camera_sink/src/distributed_camera_sink_proxy.cpp index 28b9033aa94edf2b8fc0345a1144e9e4b945c987..9674fc0274788db6f14ffdfbddda482714466789 100644 --- a/interfaces/inner_kits/native_cpp/camera_sink/src/distributed_camera_sink_proxy.cpp +++ b/interfaces/inner_kits/native_cpp/camera_sink/src/distributed_camera_sink_proxy.cpp @@ -26,6 +26,10 @@ namespace DistributedHardware { int32_t DistributedCameraSinkProxy::InitSink(const std::string& params) { DHLOGI("DistributedCameraSinkProxy::InitSink"); + if (params.empty() || params.size() > PARAM_MAX_SIZE) { + DHLOGE("DistributedCameraSinkProxy::InitSink params is invalid"); + return DCAMERA_BAD_VALUE; + } sptr remote = Remote(); if (remote == nullptr) { DHLOGE("DistributedCameraSinkProxy::InitSink remote service is null"); @@ -72,6 +76,11 @@ int32_t DistributedCameraSinkProxy::ReleaseSink() int32_t DistributedCameraSinkProxy::SubscribeLocalHardware(const std::string& dhId, const std::string& parameters) { DHLOGI("DistributedCameraSinkProxy::SubscribeLocalHardware dhId: %s", GetAnonyString(dhId).c_str()); + if (parameters.empty() || parameters.size() > PARAM_MAX_SIZE || dhId.empty() || + dhId.size() > DID_MAX_SIZE) { + DHLOGE("DistributedCameraSinkProxy::SubscribeLocalHardware params is invalid"); + return DCAMERA_BAD_VALUE; + } sptr remote = Remote(); if (remote == nullptr) { DHLOGE("DistributedCameraSinkProxy::SubscribeLocalHardware remote service is null"); @@ -97,6 +106,10 @@ int32_t DistributedCameraSinkProxy::SubscribeLocalHardware(const std::string& dh int32_t DistributedCameraSinkProxy::UnsubscribeLocalHardware(const std::string& dhId) { DHLOGI("DistributedCameraSinkProxy::UnsubscribeLocalHardware dhId: %s", GetAnonyString(dhId).c_str()); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE) { + DHLOGE("DistributedCameraSinkProxy::UnsubscribeLocalHardware params is invalid"); + return DCAMERA_BAD_VALUE; + } sptr remote = Remote(); if (remote == nullptr) { DHLOGE("DistributedCameraSinkProxy::UnsubscribeLocalHardware remote service is null"); @@ -122,6 +135,10 @@ int32_t DistributedCameraSinkProxy::UnsubscribeLocalHardware(const std::string& int32_t DistributedCameraSinkProxy::StopCapture(const std::string& dhId) { DHLOGI("DistributedCameraSinkProxy::StopCapture dhId: %s", GetAnonyString(dhId).c_str()); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE) { + DHLOGE("DistributedCameraSinkProxy::StopCapture params is invalid"); + return DCAMERA_BAD_VALUE; + } sptr remote = Remote(); if (remote == nullptr) { DHLOGE("DistributedCameraSinkProxy::StopCapture remote service is null"); @@ -148,6 +165,11 @@ int32_t DistributedCameraSinkProxy::StopCapture(const std::string& dhId) int32_t DistributedCameraSinkProxy::ChannelNeg(const std::string& dhId, std::string& channelInfo) { DHLOGI("DistributedCameraSinkProxy::ChannelNeg dhId: %s", GetAnonyString(dhId).c_str()); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE || channelInfo.empty() || + channelInfo.size() > PARAM_MAX_SIZE) { + DHLOGE("DistributedCameraSinkProxy::ChannelNeg params is invalid"); + return DCAMERA_BAD_VALUE; + } sptr remote = Remote(); if (remote == nullptr) { DHLOGE("DistributedCameraSinkProxy::ChannelNeg remote service is null"); @@ -173,6 +195,11 @@ int32_t DistributedCameraSinkProxy::ChannelNeg(const std::string& dhId, std::str int32_t DistributedCameraSinkProxy::GetCameraInfo(const std::string& dhId, std::string& cameraInfo) { DHLOGI("DistributedCameraSinkProxy::GetCameraInfo dhId: %s", GetAnonyString(dhId).c_str()); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE || cameraInfo.empty() || + cameraInfo.size() > PARAM_MAX_SIZE) { + DHLOGE("DistributedCameraSinkProxy::GetCameraInfo parmas is invalid"); + return DCAMERA_BAD_VALUE; + } sptr remote = Remote(); if (remote == nullptr) { DHLOGE("DistributedCameraSinkProxy::GetCameraInfo remote service is null"); @@ -198,6 +225,11 @@ int32_t DistributedCameraSinkProxy::GetCameraInfo(const std::string& dhId, std:: int32_t DistributedCameraSinkProxy::OpenChannel(const std::string& dhId, std::string& openInfo) { DHLOGI("DistributedCameraSinkProxy::OpenChannel dhId: %s", GetAnonyString(dhId).c_str()); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE || openInfo.empty() || + openInfo.size() > PARAM_MAX_SIZE) { + DHLOGE("DistributedCameraSinkProxy::OpenChannel params is invalid"); + return DCAMERA_BAD_VALUE; + } sptr remote = Remote(); if (remote == nullptr) { DHLOGE("DistributedCameraSinkProxy::OpenChannel remote service is null"); @@ -223,6 +255,10 @@ int32_t DistributedCameraSinkProxy::OpenChannel(const std::string& dhId, std::st int32_t DistributedCameraSinkProxy::CloseChannel(const std::string& dhId) { DHLOGI("DistributedCameraSinkProxy::CloseChannel dhId: %s", GetAnonyString(dhId).c_str()); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE) { + DHLOGE("DistributedCameraSinkProxy::CloseChannel params is invalid"); + return DCAMERA_BAD_VALUE; + } sptr remote = Remote(); if (remote == nullptr) { DHLOGE("DistributedCameraSinkProxy::CloseChannel remote service is null"); diff --git a/services/cameraservice/cameraoperator/client/include/listener/dcamera_photo_surface_listener.h b/services/cameraservice/cameraoperator/client/include/listener/dcamera_photo_surface_listener.h index 72f77a68d52603f59b0d0bd759d10f06556ac746..4d77011da913846f2b24791f9fa5ff67a821d5b3 100644 --- a/services/cameraservice/cameraoperator/client/include/listener/dcamera_photo_surface_listener.h +++ b/services/cameraservice/cameraoperator/client/include/listener/dcamera_photo_surface_listener.h @@ -30,6 +30,7 @@ public: private: sptr surface_; std::shared_ptr callback_; + const int32_t SURFACE_BUFFER_MAX_SIZE = 10 * 1024 * 1024; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/cameraservice/cameraoperator/client/include/listener/dcamera_video_surface_listener.h b/services/cameraservice/cameraoperator/client/include/listener/dcamera_video_surface_listener.h index 6e06a7e1c39d7f759ebb3e7657086e9471f490b0..cb33b642712932dcfb622f90998f46d2db7686c6 100644 --- a/services/cameraservice/cameraoperator/client/include/listener/dcamera_video_surface_listener.h +++ b/services/cameraservice/cameraoperator/client/include/listener/dcamera_video_surface_listener.h @@ -30,6 +30,7 @@ public: private: sptr surface_; std::shared_ptr callback_; + const int32_t SURFACE_BUFFER_MAX_SIZE = 10 * 1024 * 1024; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/cameraservice/cameraoperator/client/src/listener/dcamera_photo_surface_listener.cpp b/services/cameraservice/cameraoperator/client/src/listener/dcamera_photo_surface_listener.cpp index b6de33da7ac0baa0622e8c896d06172e5c7eafe7..8dd8a488b7f53e5b0d81e850539b5c9cb31ecc42 100644 --- a/services/cameraservice/cameraoperator/client/src/listener/dcamera_photo_surface_listener.cpp +++ b/services/cameraservice/cameraoperator/client/src/listener/dcamera_photo_surface_listener.cpp @@ -53,7 +53,7 @@ void DCameraPhotoSurfaceListener::OnBufferAvailable() if (size <= 0) { size = static_cast(buffer->GetSize()); } - if ((address == nullptr) || (size <= 0)) { + if ((address == nullptr) || (size <= 0) || (size > SURFACE_BUFFER_MAX_SIZE)) { DHLOGE("DCameraPhotoSurfaceListener invalid params, size: %d", size); break; } diff --git a/services/cameraservice/cameraoperator/client/src/listener/dcamera_photo_surface_listener_common.cpp b/services/cameraservice/cameraoperator/client/src/listener/dcamera_photo_surface_listener_common.cpp index 89a8690cbeb2397fdc980850d21f222219ef97e6..d94e468784a8f9d484fd5295d03d37ae78842e60 100644 --- a/services/cameraservice/cameraoperator/client/src/listener/dcamera_photo_surface_listener_common.cpp +++ b/services/cameraservice/cameraoperator/client/src/listener/dcamera_photo_surface_listener_common.cpp @@ -52,9 +52,8 @@ void DCameraPhotoSurfaceListener::OnBufferAvailable() if (size <= 0) { size = static_cast(buffer->GetSize()); } - char *address = static_cast(buffer->GetVirAddr()); - if ((address == nullptr) || (size <= 0)) { + if ((address == nullptr) || (size <= 0) || (size > SURFACE_BUFFER_MAX_SIZE)) { DHLOGE("DCameraPhotoSurfaceListenerCommon invalid params, size: %d", size); break; } diff --git a/services/cameraservice/cameraoperator/client/src/listener/dcamera_video_surface_listener.cpp b/services/cameraservice/cameraoperator/client/src/listener/dcamera_video_surface_listener.cpp index 241d9284a76300a0e0d69897fbdb3e29f5af32b9..f937b343971ea8eb8cded753cf94214d4586471b 100644 --- a/services/cameraservice/cameraoperator/client/src/listener/dcamera_video_surface_listener.cpp +++ b/services/cameraservice/cameraoperator/client/src/listener/dcamera_video_surface_listener.cpp @@ -50,7 +50,7 @@ void DCameraVideoSurfaceListener::OnBufferAvailable() int32_t height = buffer->GetHeight(); int32_t size = buffer->GetSize(); char *address = static_cast(buffer->GetVirAddr()); - if ((address == nullptr) || (size <= 0) || (width <= 0) || (height <= 0)) { + if ((address == nullptr) || (size <= 0) || (width <= 0) || (height <= 0) || (size > SURFACE_BUFFER_MAX_SIZE)) { DHLOGE("DCameraVideoSurfaceListener invalid params, width: %d, height: %d, size: %d", width, height, size); break; } diff --git a/services/cameraservice/cameraoperator/client/src/listener/dcamera_video_surface_listener_common.cpp b/services/cameraservice/cameraoperator/client/src/listener/dcamera_video_surface_listener_common.cpp index 5408dd7a647c8f75d93f022e5d4a50e8a7e21546..c18db05fed4c13a871c705719e1f274fdf9f6818 100644 --- a/services/cameraservice/cameraoperator/client/src/listener/dcamera_video_surface_listener_common.cpp +++ b/services/cameraservice/cameraoperator/client/src/listener/dcamera_video_surface_listener_common.cpp @@ -50,8 +50,8 @@ void DCameraVideoSurfaceListener::OnBufferAvailable() int32_t height = buffer->GetHeight(); int32_t size = width * height * 4; char *address = static_cast(buffer->GetVirAddr()); - if ((address == nullptr) || (size <= 0)) { - DHLOGE("DCameraVideoSurfaceListenerCommon invalid params, size: %d", size); + if ((address == nullptr) || (size <= 0) || (size > SURFACE_BUFFER_MAX_SIZE)) { + DHLOGE("DCameraVideoSurfaceListenerCommon invalid params, width: %d, height: %d, size: %d", width, height, size); break; } diff --git a/services/cameraservice/sinkservice/include/distributedcamera/distributed_camera_sink_stub.h b/services/cameraservice/sinkservice/include/distributedcamera/distributed_camera_sink_stub.h index 3f31c97c519822d2ac030c709a8c566b2ee0193f..b2c2d1ebfecf91462c2ea3ed8029555b0a2e1e9a 100644 --- a/services/cameraservice/sinkservice/include/distributedcamera/distributed_camera_sink_stub.h +++ b/services/cameraservice/sinkservice/include/distributedcamera/distributed_camera_sink_stub.h @@ -42,6 +42,9 @@ private: using DCameraFunc = int32_t (DistributedCameraSinkStub::*)(MessageParcel &data, MessageParcel &reply); std::map memberFuncMap_; + + const size_t DID_MAX_SIZE = 256; + const size_t PARAM_MAX_SIZE = 50 * 1024 * 1024; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h b/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h index 9b52949f89f729c1f94467f6694cef2ddcc300cf..80d9e6b8427a04f75bf165b2c37a2b303adccacf 100644 --- a/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h +++ b/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h @@ -79,6 +79,7 @@ private: const std::string SESSION_FLAG = "control"; const std::string SRC_TYPE = "camera"; + const size_t DATABUFF_MAX_SIZE = 100 * 1024 * 1024; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_stub.cpp b/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_stub.cpp index fe7ef95593dbadda2f3c71e2ea6bad3ff1ec14b0..385f281f534bfd82b19d3b63dd11f8284ceefd9a 100644 --- a/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_stub.cpp +++ b/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_stub.cpp @@ -57,8 +57,16 @@ int32_t DistributedCameraSinkStub::OnRemoteRequest(uint32_t code, MessageParcel int32_t DistributedCameraSinkStub::InitSinkInner(MessageParcel &data, MessageParcel &reply) { DHLOGD("DistributedCameraSinkStub::InitSinkInner"); - std::string params = data.ReadString(); - int32_t ret = InitSink(params); + int32_t ret = DCAMERA_OK; + do { + std::string params = data.ReadString(); + if (params.empty() || params.size() > PARAM_MAX_SIZE) { + DHLOGE("DistributedCameraSinkStub::InitSinkInner params is invalid"); + ret = DCAMERA_BAD_VALUE; + break; + } + ret = InitSink(params); + } while (0); reply.WriteInt32(ret); return DCAMERA_OK; } @@ -74,9 +82,18 @@ int32_t DistributedCameraSinkStub::ReleaseSinkInner(MessageParcel &data, Message int32_t DistributedCameraSinkStub::SubscribeLocalHardwareInner(MessageParcel &data, MessageParcel &reply) { DHLOGD("DistributedCameraSinkStub::SubscribeLocalHardwareInner"); - std::string dhId = data.ReadString(); - std::string parameters = data.ReadString(); - int32_t ret = SubscribeLocalHardware(dhId, parameters); + int32_t ret = DCAMERA_OK; + do { + std::string dhId = data.ReadString(); + std::string parameters = data.ReadString(); + if (parameters.empty() || parameters.size() > PARAM_MAX_SIZE || dhId.empty() || + dhId.size() > DID_MAX_SIZE) { + DHLOGE("DistributedCameraSinkStub::SubscribeLocalHardwareInner params is invalid"); + ret = DCAMERA_BAD_VALUE; + break; + } + ret = SubscribeLocalHardware(dhId, parameters); + } while (0); reply.WriteInt32(ret); return DCAMERA_OK; } @@ -84,8 +101,16 @@ int32_t DistributedCameraSinkStub::SubscribeLocalHardwareInner(MessageParcel &da int32_t DistributedCameraSinkStub::UnsubscribeLocalHardwareInner(MessageParcel &data, MessageParcel &reply) { DHLOGD("DistributedCameraSinkStub::UnsubscribeLocalHardwareInner"); - std::string dhId = data.ReadString(); - int32_t ret = UnsubscribeLocalHardware(dhId); + int32_t ret = DCAMERA_OK; + do { + std::string dhId = data.ReadString(); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE) { + DHLOGE("DistributedCameraSinkStub::UnsubscribeLocalHardwareInner params is invalid"); + ret = DCAMERA_BAD_VALUE; + break; + } + ret = UnsubscribeLocalHardware(dhId); + } while (0); reply.WriteInt32(ret); return DCAMERA_OK; } @@ -93,8 +118,16 @@ int32_t DistributedCameraSinkStub::UnsubscribeLocalHardwareInner(MessageParcel & int32_t DistributedCameraSinkStub::StopCaptureInner(MessageParcel &data, MessageParcel &reply) { DHLOGD("DistributedCameraSinkStub::StopCaptureInner"); - std::string dhId = data.ReadString(); - int32_t ret = StopCapture(dhId); + int32_t ret = DCAMERA_OK; + do { + std::string dhId = data.ReadString(); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE) { + DHLOGE("DistributedCameraSinkStub::StopCaptureInner params is invalid"); + ret = DCAMERA_BAD_VALUE; + break; + } + ret = StopCapture(dhId); + } while (0); reply.WriteInt32(ret); return DCAMERA_OK; } @@ -102,9 +135,18 @@ int32_t DistributedCameraSinkStub::StopCaptureInner(MessageParcel &data, Message int32_t DistributedCameraSinkStub::ChannelNegInner(MessageParcel &data, MessageParcel &reply) { DHLOGD("DistributedCameraSinkStub::ChannelNegInner"); - std::string dhId = data.ReadString(); - std::string channelInfo = data.ReadString(); - int32_t ret = ChannelNeg(dhId, channelInfo); + int32_t ret = DCAMERA_OK; + do { + std::string dhId = data.ReadString(); + std::string channelInfo = data.ReadString(); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE || channelInfo.empty() || + channelInfo.size() > PARAM_MAX_SIZE) { + DHLOGE("DistributedCameraSinkStub::ChannelNegInner params is invalid"); + ret = DCAMERA_BAD_VALUE; + break; + } + ret = ChannelNeg(dhId, channelInfo); + } while (0); reply.WriteInt32(ret); return DCAMERA_OK; } @@ -112,9 +154,18 @@ int32_t DistributedCameraSinkStub::ChannelNegInner(MessageParcel &data, MessageP int32_t DistributedCameraSinkStub::GetCameraInfoInner(MessageParcel &data, MessageParcel &reply) { DHLOGD("DistributedCameraSinkStub::GetCameraInfoInner"); - std::string dhId = data.ReadString(); - std::string cameraInfo = data.ReadString(); - int32_t ret = GetCameraInfo(dhId, cameraInfo); + int32_t ret = DCAMERA_OK; + do { + std::string dhId = data.ReadString(); + std::string cameraInfo = data.ReadString(); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE || cameraInfo.empty() || + cameraInfo.size() > PARAM_MAX_SIZE) { + DHLOGE("DistributedCameraSinkStub::GetCameraInfoInner params is invalid"); + ret = DCAMERA_BAD_VALUE; + break; + } + ret = GetCameraInfo(dhId, cameraInfo); + } while (0); reply.WriteInt32(ret); return DCAMERA_OK; } @@ -122,9 +173,18 @@ int32_t DistributedCameraSinkStub::GetCameraInfoInner(MessageParcel &data, Messa int32_t DistributedCameraSinkStub::OpenChannelInner(MessageParcel &data, MessageParcel &reply) { DHLOGD("DistributedCameraSinkStub::OpenChannelInner"); - std::string dhId = data.ReadString(); - std::string openInfo = data.ReadString(); - int32_t ret = OpenChannel(dhId, openInfo); + int32_t ret = DCAMERA_OK; + do { + std::string dhId = data.ReadString(); + std::string openInfo = data.ReadString(); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE || openInfo.empty()|| + openInfo.size() > PARAM_MAX_SIZE) { + DHLOGE("DistributedCameraSinkStub::OpenChannelInner params is invalid"); + ret = DCAMERA_BAD_VALUE; + break; + } + ret = OpenChannel(dhId, openInfo); + } while (0); reply.WriteInt32(ret); return DCAMERA_OK; } @@ -132,8 +192,16 @@ int32_t DistributedCameraSinkStub::OpenChannelInner(MessageParcel &data, Message int32_t DistributedCameraSinkStub::CloseChannelInner(MessageParcel &data, MessageParcel &reply) { DHLOGD("DistributedCameraSinkStub::CloseChannelInner"); - std::string dhId = data.ReadString(); - int32_t ret = CloseChannel(dhId); + int32_t ret = DCAMERA_OK; + do { + std::string dhId = data.ReadString(); + if (dhId.empty() || dhId.size() > DID_MAX_SIZE) { + DHLOGE("DistributedCameraSinkStub::CloseChannelInner params is invalid"); + ret = DCAMERA_BAD_VALUE; + break; + } + ret = CloseChannel(dhId); + } while (0); reply.WriteInt32(ret); return 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 2f13d07f541fc1d26efca370fc9daf55375b9bbb..10d070344d71184a267a53d0720b4f411fc5bd86 100644 --- a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp +++ b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp @@ -401,6 +401,10 @@ void DCameraSinkController::OnDataReceived(std::vectorSize() <= 0 || buffer->Size() > DATABUFF_MAX_SIZE) { + DHLOGI("DCameraSinkController::OnDataReceived buffer is invalid"); + return; + } HandleReceivedData(buffer); } } diff --git a/services/data_process/include/pipeline_node/multimedia_codec/encoder/encode_data_process.h b/services/data_process/include/pipeline_node/multimedia_codec/encoder/encode_data_process.h index a7e9275d8e8b7ea8ab68a05c6cb46cafab90d23f..46eea982c4a27f74274a8a15699bf0eda9f9fef0 100644 --- a/services/data_process/include/pipeline_node/multimedia_codec/encoder/encode_data_process.h +++ b/services/data_process/include/pipeline_node/multimedia_codec/encoder/encode_data_process.h @@ -87,6 +87,7 @@ private: constexpr static int32_t MAX_VIDEO_HEIGHT = 1080; constexpr static int32_t IDR_FRAME_INTERVAL_MS = 300; constexpr static int32_t FIRST_FRAME_OUTPUT_NUM = 2; + const int32_t DATABUFF_MAX_SIZE = 100 * 1024 * 1024; constexpr static int64_t WIDTH_320_HEIGHT_240 = 320 * 240; constexpr static int64_t WIDTH_480_HEIGHT_360 = 480 * 360; diff --git a/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process.cpp b/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process.cpp index c9d0e265b4cc7b62695cfe3f1e185350ebbbde62..0c13513a273ddeffa015107a91aba118162a2efe 100644 --- a/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process.cpp +++ b/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process.cpp @@ -485,7 +485,7 @@ int32_t EncodeDataProcess::GetEncoderOutputBuffer(uint32_t index, Media::AVCodec return DCAMERA_BAD_OPERATE; } - if (info.size <= 0) { + if (info.size <= 0 || info.size > DATABUFF_MAX_SIZE) { DHLOGE("AVCodecBufferInfo error, buffer size : %d", info.size); return DCAMERA_BAD_VALUE; } diff --git a/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process_common.cpp b/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process_common.cpp index c95f53cae2fa2b5a7d0135315dcb5e4fa07e1a97..c11b9436a63c3e2f780162edc89240e9249333bf 100644 --- a/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process_common.cpp +++ b/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process_common.cpp @@ -442,7 +442,7 @@ int32_t EncodeDataProcess::GetEncoderOutputBuffer(uint32_t index, Media::AVCodec return DCAMERA_BAD_OPERATE; } - if (info.size <= 0) { + if (info.size <= 0 || info.size > DATABUFF_MAX_SIZE) { DHLOGE("AVCodecBufferInfo error, buffer size : %d", info.size); return DCAMERA_BAD_VALUE; }