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));
     }