Commit 6eb729722 for imagemagick.org
commit 6eb72972276a9b99d5a4ba75ea7d11f501262647
Author: Dirk Lemstra <dirk@lemstra.org>
Date: Mon May 25 14:03:10 2026 +0200
Added extra checks when pinging an image with zero dimensions.
diff --git a/coders/cin.c b/coders/cin.c
index 29fdf4abc..ef41814a2 100644
--- a/coders/cin.c
+++ b/coders/cin.c
@@ -725,10 +725,10 @@ static Image *ReadCINImage(const ImageInfo *image_info,ExceptionInfo *exception)
image->depth=cin.image.channel[0].bits_per_pixel;
image->columns=cin.image.channel[0].pixels_per_line;
image->rows=cin.image.channel[0].lines_per_image;
- if ((image->columns == 0) || (image->rows == 0))
- ThrowReaderException(CorruptImageError,"ImproperImageHeader");
if (image_info->ping != MagickFalse)
{
+ if ((image->columns == 0) || (image->rows == 0))
+ ThrowReaderException(CorruptImageError,"ImproperImageHeader");
(void) CloseBlob(image);
return(image);
}
diff --git a/coders/dpx.c b/coders/dpx.c
index efd5cc31b..4406fadda 100644
--- a/coders/dpx.c
+++ b/coders/dpx.c
@@ -1138,6 +1138,8 @@ static Image *ReadDPXImage(const ImageInfo *image_info,ExceptionInfo *exception)
}
if (image_info->ping != MagickFalse)
{
+ if ((image->columns == 0) || (image->rows == 0))
+ ThrowReaderException(CorruptImageError,"ImproperImageHeader");
(void) CloseBlob(image);
return(GetFirstImageInList(image));
}
diff --git a/coders/farbfeld.c b/coders/farbfeld.c
index 3cce83531..c73145868 100644
--- a/coders/farbfeld.c
+++ b/coders/farbfeld.c
@@ -181,11 +181,11 @@ static Image *ReadFARBFELDImage(const ImageInfo *image_info,
ThrowReaderException(CorruptImageError,"ImproperImageHeader");
image->columns=(size_t) ReadBlobLong(image);
image->rows=(size_t) ReadBlobLong(image);
- if ((image->columns == 0) || (image->rows == 0))
- ThrowReaderException(CorruptImageError,"ImproperImageHeader");
image->alpha_trait=BlendPixelTrait;
if (image_info->ping != MagickFalse)
{
+ if ((image->columns == 0) || (image->rows == 0))
+ ThrowReaderException(CorruptImageError,"ImproperImageHeader");
(void) CloseBlob(image);
return(GetFirstImageInList(image));
}
diff --git a/coders/pdb.c b/coders/pdb.c
index 00d4e2f0f..0f53b9da2 100644
--- a/coders/pdb.c
+++ b/coders/pdb.c
@@ -405,6 +405,8 @@ static Image *ReadPDBImage(const ImageInfo *image_info,ExceptionInfo *exception)
ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
if (image_info->ping != MagickFalse)
{
+ if ((image->columns == 0) || (image->rows == 0))
+ ThrowReaderException(CorruptImageError,"ImproperImageHeader");
(void) CloseBlob(image);
return(GetFirstImageInList(image));
}
diff --git a/coders/pict.c b/coders/pict.c
index 0e60638b1..2b516a679 100644
--- a/coders/pict.c
+++ b/coders/pict.c
@@ -958,6 +958,8 @@ static Image *ReadPICTImage(const ImageInfo *image_info,
if ((image_info->ping != MagickFalse) && (image_info->number_scenes != 0))
if (image->scene >= (image_info->scene+image_info->number_scenes-1))
{
+ if ((image->columns == 0) || (image->rows == 0))
+ ThrowReaderException(CorruptImageError,"ImproperImageHeader");
(void) CloseBlob(image);
return(GetFirstImageInList(image));
}
diff --git a/coders/rgf.c b/coders/rgf.c
index 39df4b874..41a70d8da 100644
--- a/coders/rgf.c
+++ b/coders/rgf.c
@@ -167,6 +167,8 @@ static Image *ReadRGFImage(const ImageInfo *image_info,ExceptionInfo *exception)
image->colormap[1].blue=(Quantum) 0;
if (image_info->ping != MagickFalse)
{
+ if ((image->columns == 0) || (image->rows == 0))
+ ThrowReaderException(CorruptImageError,"ImproperImageHeader");
(void) CloseBlob(image);
return(GetFirstImageInList(image));
}
diff --git a/coders/rla.c b/coders/rla.c
index 6d7d5e21b..991dbd312 100644
--- a/coders/rla.c
+++ b/coders/rla.c
@@ -268,6 +268,8 @@ static Image *ReadRLAImage(const ImageInfo *image_info,ExceptionInfo *exception)
rla_info.active_window.bottom+1);
if (image_info->ping != MagickFalse)
{
+ if ((image->columns == 0) || (image->rows == 0))
+ ThrowReaderException(CorruptImageError,"ImproperImageHeader");
(void) CloseBlob(image);
return(GetFirstImageInList(image));
}