Commit 2ab24d748 for imagemagick.org

commit 2ab24d74865ab92faeeefe0fec890abf1e88e57c
Author: Cristy <urban-warrior@imagemagick.org>
Date:   Wed Apr 1 09:21:04 2026 -0400

    https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-pmpg-6pww-fg6q

diff --git a/MagickCore/vision.c b/MagickCore/vision.c
index d5bd29746..8c544ab90 100644
--- a/MagickCore/vision.c
+++ b/MagickCore/vision.c
@@ -1191,7 +1191,9 @@ MagickExport Image *ConnectedComponentsImage(const Image *image,
           }
         step=(ssize_t) (first > last ? -1 : 1);
         for ( ; first != (last+step); first+=step)
-          object[first].merge=MagickFalse;
+          if ((first >= 0) &&
+              (first < (ssize_t) component_image->colors))
+            object[first].merge=MagickFalse;
       }
     }
   artifact=GetImageArtifact(image,"connected-components:keep-top");
@@ -1219,7 +1221,11 @@ MagickExport Image *ConnectedComponentsImage(const Image *image,
       qsort((void *) top_objects,component_image->colors,sizeof(*top_objects),
         CCObjectInfoCompare);
       for (i=top_ids+1; i < (ssize_t) component_image->colors; i++)
-        object[top_objects[i].id].merge=MagickTrue;
+      {
+        ssize_t id = (ssize_t) top_objects[i].id;
+        if ((id >= 0) && (id < (ssize_t) component_image->colors))
+          object[id].merge=MagickTrue;
+      }
       top_objects=(CCObjectInfo *) RelinquishMagickMemory(top_objects);
     }
   artifact=GetImageArtifact(image,"connected-components:remove-colors");
@@ -1281,7 +1287,9 @@ MagickExport Image *ConnectedComponentsImage(const Image *image,
         }
       step=(ssize_t) (first > last ? -1 : 1);
       for ( ; first != (last+step); first+=step)
-        object[first].merge=MagickTrue;
+        if ((first >= 0) &&
+            (first < (ssize_t) component_image->colors))
+          object[first].merge=MagickTrue;
     }
   artifact=GetImageArtifact(image,"connected-components:perimeter-threshold");
   if (artifact != (const char *) NULL)