diff --git a/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp b/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp index 84088c7b4422cba4b6da3f632f268bdd5f974c30..5562cf7c7beade1b7af6e19679d2f9ee424d8493 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"); @@ -371,6 +373,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 ed721f93659e67cc717f645f38a22273d851c024..3be0f14272275c34923be6bcc2fd72fb633c9841 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);