diff --git a/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp b/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp index 4808b19e93fd270ff689e11d4638d36848c0b2df..d98436b4e2ea0726165397cfd31213c34e092efd 100644 --- a/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp +++ b/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp @@ -31,6 +31,8 @@ namespace OHOS { namespace DistributedHardware { IMPLEMENT_SINGLE_INSTANCE(DCameraHandler); +const int32_t MAXWIDTHSIZE = 65535; + DCameraHandler::~DCameraHandler() { DHLOGI("~DCameraHandler"); @@ -308,6 +310,10 @@ bool DCameraHandler::IsValid(const DCStreamType type, const CameraStandard::Size break; } case SNAPSHOT_FRAME: { + if (size.width > MAXWIDTHSIZE) { + DHLOGE("size width out of range."); + 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 9d7bb3a3afae18833632a29d79dcb0d4a3a0d6cc..7e37aa7a9051baa23f380e6f45c59f49dd02b627 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 @@ -244,6 +244,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);