Commit 44df3a54a for imagemagick.org
commit 44df3a54af31b8d33fa5e40b4dc61d051c4a5d9a
Author: Dirk Lemstra <dirk@lemstra.org>
Date: Sun May 24 10:01:48 2026 +0200
Added extra checks to prevent an overflow on 32-bit systems (GHSA-4v89-6mgq-6rgc)
diff --git a/coders/mat.c b/coders/mat.c
index e14c922e1..1da5cbd4f 100644
--- a/coders/mat.c
+++ b/coders/mat.c
@@ -751,8 +751,15 @@ static Image *ReadMATImageV4(const ImageInfo *image_info,Image *image,
if (HDR.Type[0] != 0)
SetQuantumEndian(image,quantum_info,MSBEndian);
status=SetQuantumFormat(image,quantum_info,format_type);
- status=SetQuantumDepth(image,quantum_info,depth);
- status=SetQuantumEndian(image,quantum_info,endian);
+ if (status != MagickFalse)
+ status=SetQuantumDepth(image,quantum_info,depth);
+ if (status != MagickFalse)
+ status=SetQuantumEndian(image,quantum_info,endian);
+ if (status == MagickFalse)
+ {
+ quantum_info=DestroyQuantumInfo(quantum_info);
+ ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
+ }
SetQuantumScale(quantum_info,1.0);
pixels=(unsigned char *) GetQuantumPixels(quantum_info);
for (y=0; y < (ssize_t) image->rows; y++)
@@ -795,8 +802,7 @@ static Image *ReadMATImageV4(const ImageInfo *image_info,Image *image,
else
InsertComplexFloatRow(image,(float *) pixels,(int) y,0,0,exception);
}
- if (quantum_info != (QuantumInfo *) NULL)
- quantum_info=DestroyQuantumInfo(quantum_info);
+ quantum_info=DestroyQuantumInfo(quantum_info);
if (EOFBlob(image) != MagickFalse)
{
ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",