diff --git a/frameworks/innerkitsimpl/common/src/pixel_map.cpp b/frameworks/innerkitsimpl/common/src/pixel_map.cpp index 8fb43e94b3dda8f4d02d66dd42cca7a11ef0e45a..0860de266b731b743b8c233f14fcac93885b453d 100644 --- a/frameworks/innerkitsimpl/common/src/pixel_map.cpp +++ b/frameworks/innerkitsimpl/common/src/pixel_map.cpp @@ -3063,6 +3063,11 @@ bool ReadDmaMemInfoFromParcel(Parcel &parcel, PixelMemInfo &pixelMemInfo, void* nativeBuffer = surfaceBuffer.GetRefPtr(); ImageUtils::SurfaceBuffer_Reference(nativeBuffer); + if (surfaceBuffer->GetSize() < static_cast(pixelMemInfo.bufferSize)) { + IMAGE_LOGE("SurfaceBuffer size %{public}d is less than expected size %{public}d", + surfaceBuffer->GetSize(), pixelMemInfo.bufferSize); + return false; + } if (!pixelMemInfo.displayOnly || !isDisplay) { pixelMemInfo.base = static_cast(surfaceBuffer->GetVirAddr()); }