Commit 808506dc4 for imagemagick.org
commit 808506dc4d0cbf3972ce0d57544a06209b65009c
Author: Cristy <urban-warrior@imagemagick.org>
Date: Fri Jun 5 09:35:29 2026 -0400
https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-h7f2-f9cc-h2gv
diff --git a/coders/yuv.c b/coders/yuv.c
index fab63030c..04c2250fa 100644
--- a/coders/yuv.c
+++ b/coders/yuv.c
@@ -109,22 +109,26 @@ static Image *ReadYUVImage(const ImageInfo *image_info,ExceptionInfo *exception)
MagickBooleanType
status;
+ ssize_t
+ x;
+
Quantum
*q;
- size_t
- length,
- quantum;
+ unsigned char
+ *p;
ssize_t
count,
horizontal_factor,
vertical_factor,
- x,
y;
+ size_t
+ length,
+ quantum;
+
unsigned char
- *p,
*scanline;
/*
@@ -168,9 +172,9 @@ static Image *ReadYUVImage(const ImageInfo *image_info,ExceptionInfo *exception)
if ((interlace == UndefinedInterlace) ||
((interlace == NoInterlace) && (vertical_factor == 2)))
{
- interlace=NoInterlace; /* CCIR 4:2:2 */
+ interlace=NoInterlace; /* CCIR 4:2:2 */
if (vertical_factor == 2)
- interlace=PlaneInterlace; /* CCIR 4:1:1 */
+ interlace=PlaneInterlace; /* CCIR 4:1:1 */
}
if (interlace != PartitionInterlace)
{
@@ -194,17 +198,17 @@ static Image *ReadYUVImage(const ImageInfo *image_info,ExceptionInfo *exception)
scanline=(unsigned char *) AcquireQuantumMemory((size_t) (2UL*
image->columns+2UL),(size_t) quantum*sizeof(*scanline));
else
- scanline=(unsigned char *) AcquireQuantumMemory(image->columns,(size_t)
- quantum*sizeof(*scanline));
+ scanline=(unsigned char *) AcquireQuantumMemory(image->columns,
+ (size_t) quantum*sizeof(*scanline));
if (scanline == (unsigned char *) NULL)
ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
status=MagickTrue;
do
{
- chroma_image=CloneImage(image,(size_t) ((ssize_t) image->columns+(ssize_t)
- horizontal_factor-1)/(size_t) horizontal_factor,(size_t) (image->rows+
- (size_t) vertical_factor-1)/(size_t) vertical_factor,MagickTrue,
- exception);
+ chroma_image=CloneImage(image,(size_t) ((ssize_t) image->columns+
+ (ssize_t) horizontal_factor-1)/(size_t) horizontal_factor,(size_t)
+ (image->rows+(size_t) vertical_factor-1)/
+ (size_t) vertical_factor,MagickTrue,exception);
if (chroma_image == (Image *) NULL)
{
scanline=(unsigned char *) RelinquishMagickMemory(scanline);
@@ -226,6 +230,7 @@ static Image *ReadYUVImage(const ImageInfo *image_info,ExceptionInfo *exception)
if (status == MagickFalse)
{
scanline=(unsigned char *) RelinquishMagickMemory(scanline);
+ chroma_image=DestroyImage(chroma_image);
image=DestroyImageList(image);
return((Image *) NULL);
}
@@ -354,6 +359,7 @@ static Image *ReadYUVImage(const ImageInfo *image_info,ExceptionInfo *exception)
if (status == MagickFalse)
{
scanline=(unsigned char *) RelinquishMagickMemory(scanline);
+ chroma_image=DestroyImage(chroma_image);
image=DestroyImageList(image);
return((Image *) NULL);
}
@@ -402,6 +408,7 @@ static Image *ReadYUVImage(const ImageInfo *image_info,ExceptionInfo *exception)
if (status == MagickFalse)
{
scanline=(unsigned char *) RelinquishMagickMemory(scanline);
+ chroma_image=DestroyImage(chroma_image);
image=DestroyImageList(image);
return((Image *) NULL);
}
@@ -457,7 +464,8 @@ static Image *ReadYUVImage(const ImageInfo *image_info,ExceptionInfo *exception)
q=GetAuthenticPixels(image,0,y,image->columns,1,exception);
chroma_pixels=GetVirtualPixels(resize_image,0,y,resize_image->columns,1,
exception);
- if ((q == (Quantum *) NULL) || (chroma_pixels == (const Quantum *) NULL))
+ if ((q == (Quantum *) NULL) ||
+ (chroma_pixels == (const Quantum *) NULL))
break;
for (x=0; x < (ssize_t) image->columns; x++)
{
@@ -610,10 +618,6 @@ ModuleExport void UnregisterYUVImage(void)
static MagickBooleanType WriteYUVImage(const ImageInfo *image_info,Image *image,
ExceptionInfo *exception)
{
- const Quantum
- *p,
- *s;
-
Image
*chroma_image,
*yuv_image;
@@ -627,6 +631,13 @@ static MagickBooleanType WriteYUVImage(const ImageInfo *image_info,Image *image,
MagickOffsetType
scene;
+ const Quantum
+ *p,
+ *s;
+
+ ssize_t
+ x;
+
size_t
height,
number_scenes,
@@ -636,7 +647,6 @@ static MagickBooleanType WriteYUVImage(const ImageInfo *image_info,Image *image,
ssize_t
horizontal_factor,
vertical_factor,
- x,
y;
assert(image_info != (const ImageInfo *) NULL);
@@ -670,9 +680,9 @@ static MagickBooleanType WriteYUVImage(const ImageInfo *image_info,Image *image,
if ((interlace == UndefinedInterlace) ||
((interlace == NoInterlace) && (vertical_factor == 2)))
{
- interlace=NoInterlace; /* CCIR 4:2:2 */
+ interlace=NoInterlace; /* CCIR 4:2:2 */
if (vertical_factor == 2)
- interlace=PlaneInterlace; /* CCIR 4:1:1 */
+ interlace=PlaneInterlace; /* CCIR 4:1:1 */
}
if (interlace != PartitionInterlace)
{