Commit 38532037a for imagemagick.org
commit 38532037a93a900f10f2424f7c319d4dd1f41a44
Author: Jake Lodwick <jakelodwick@users.noreply.github.com>
Date: Sun Mar 1 11:53:57 2026 -0700
Add overflow checks to PS3 write path (#8590)
diff --git a/coders/ps3.c b/coders/ps3.c
index 2b02d49b5..38099a7a1 100644
--- a/coders/ps3.c
+++ b/coders/ps3.c
@@ -325,6 +325,10 @@ static MagickBooleanType SerializeImage(const ImageInfo *image_info,
const Quantum
*p;
+ size_t
+ channels,
+ extent;
+
ssize_t
x;
@@ -339,8 +343,13 @@ static MagickBooleanType SerializeImage(const ImageInfo *image_info,
if (IsEventLogging() != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
status=MagickTrue;
- *length=(image->colorspace == CMYKColorspace ? 4 : 3)*(size_t)
- image->columns*image->rows;
+ channels=(image->colorspace == CMYKColorspace ? 4 : 3);
+ if (HeapOverflowSanityCheckGetSize(channels,(size_t) image->columns,
+ &extent) != MagickFalse)
+ ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
+ if (HeapOverflowSanityCheckGetSize(extent,image->rows,length) !=
+ MagickFalse)
+ ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
*pixel_info=AcquireVirtualMemory(*length,sizeof(*q));
if (*pixel_info == (MemoryInfo *) NULL)
ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");