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)