From 163bd5cc9144ec9623582e3aa2969936577ac20a Mon Sep 17 00:00:00 2001 From: zhonglufu Date: Mon, 18 Mar 2024 20:26:30 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E5=B8=83?= =?UTF-8?q?=E5=BC=8F=E7=9B=B8=E6=9C=BAhandler=E5=A2=9E=E5=8A=A0=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E4=B9=98=E6=B3=95=E6=BA=A2=E5=87=BA=E6=8B=A6=E6=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhonglufu --- .../cameraoperator/handler/src/dcamera_handler.cpp | 8 ++++++++ .../common/dcamerahandler/dcamera_handler_test.cpp | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp b/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp index 84088c7b..970420c1 100644 --- a/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp +++ b/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp @@ -15,7 +15,9 @@ #include "dcamera_handler.h" +#include #include +#include #include "anonymous_string.h" #include "avcodec_info.h" @@ -31,6 +33,8 @@ namespace OHOS { namespace DistributedHardware { IMPLEMENT_SINGLE_INSTANCE(DCameraHandler); +const int32_t MULTIPLENUM = 2; + DCameraHandler::~DCameraHandler() { DHLOGI("~DCameraHandler"); @@ -371,6 +375,10 @@ bool DCameraHandler::IsValid(const DCStreamType type, const CameraStandard::Size break; } case SNAPSHOT_FRAME: { + if (pow(size.width, MULTIPLENUM) > UINT_MAX) { + DHLOGE("square of size.width overflow."); + return ret; + } uint64_t dcResolution = static_cast(size.width * size.width); uint64_t dcMaxResolution = static_cast(RESOLUTION_MAX_WIDTH_SNAPSHOT * RESOLUTION_MAX_HEIGHT_SNAPSHOT); diff --git a/services/cameraservice/cameraoperator/handler/test/unittest/common/dcamerahandler/dcamera_handler_test.cpp b/services/cameraservice/cameraoperator/handler/test/unittest/common/dcamerahandler/dcamera_handler_test.cpp index ed721f93..3be0f142 100644 --- a/services/cameraservice/cameraoperator/handler/test/unittest/common/dcamerahandler/dcamera_handler_test.cpp +++ b/services/cameraservice/cameraoperator/handler/test/unittest/common/dcamerahandler/dcamera_handler_test.cpp @@ -245,6 +245,10 @@ HWTEST_F(DCameraHandlerTest, dcamera_handler_test_008, TestSize.Level1) ret = DCameraHandler::GetInstance().IsValid(SNAPSHOT_FRAME, size); EXPECT_EQ(ret, true); + CameraStandard::Size size1{ 65540, 480 }; + ret = DCameraHandler::GetInstance().IsValid(SNAPSHOT_FRAME, size1); + EXPECT_EQ(ret, false); + int32_t invalidParam = 2; auto type = static_cast(invalidParam); ret = DCameraHandler::GetInstance().IsValid(type, size); -- Gitee From 8241a9e77f9954bb7fbc9ace5f03c15bba9c5f0b Mon Sep 17 00:00:00 2001 From: ZhongLufu Date: Tue, 19 Mar 2024 13:31:21 +0000 Subject: [PATCH 2/2] update services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp. Signed-off-by: ZhongLufu --- .../cameraoperator/handler/src/dcamera_handler.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp b/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp index 970420c1..5562cf7c 100644 --- a/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp +++ b/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp @@ -15,9 +15,7 @@ #include "dcamera_handler.h" -#include #include -#include #include "anonymous_string.h" #include "avcodec_info.h" @@ -33,7 +31,7 @@ namespace OHOS { namespace DistributedHardware { IMPLEMENT_SINGLE_INSTANCE(DCameraHandler); -const int32_t MULTIPLENUM = 2; +const int32_t MAXWIDTHSIZE = 65535; DCameraHandler::~DCameraHandler() { @@ -375,8 +373,8 @@ bool DCameraHandler::IsValid(const DCStreamType type, const CameraStandard::Size break; } case SNAPSHOT_FRAME: { - if (pow(size.width, MULTIPLENUM) > UINT_MAX) { - DHLOGE("square of size.width overflow."); + if (size.width > MAXWIDTHSIZE) { + DHLOGE("size width out of range."); return ret; } uint64_t dcResolution = static_cast(size.width * size.width); -- Gitee