Commit 52aec4ddf for imagemagick.org
commit 52aec4ddf0c9222ab7867896362a4227c225321e
Author: Cristy <urban-warrior@imagemagick.org>
Date: Thu Nov 12 19:28:12 2026 -0500
https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-58v3-cmwm-hj3w
diff --git a/MagickCore/transform.c b/MagickCore/transform.c
index 3a41e5ea2..c6294cedb 100644
--- a/MagickCore/transform.c
+++ b/MagickCore/transform.c
@@ -1883,7 +1883,7 @@ MagickExport Image *SpliceImage(const Image *image,
#pragma omp parallel for schedule(static) shared(progress,status) \
magick_number_threads(image,splice_image,(size_t) splice_geometry.y,2)
#endif
- for (y=0; y < (ssize_t) splice_geometry.y; y++)
+ for (y=0; y < MagickMin(splice_geometry.y,(ssize_t) splice_image->rows); y++)
{
const Quantum
*magick_restrict p;
@@ -1902,6 +1902,9 @@ MagickExport Image *SpliceImage(const Image *image,
exception);
if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL))
{
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+ #pragma omp critical (SpliceImage)
+#endif
status=MagickFalse;
continue;
}
@@ -1952,7 +1955,12 @@ MagickExport Image *SpliceImage(const Image *image,
q+=(ptrdiff_t) GetPixelChannels(splice_image);
}
if (SyncCacheViewAuthenticPixels(splice_view,exception) == MagickFalse)
- status=MagickFalse;
+ {
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+ #pragma omp critical (SpliceImage)
+#endif
+ status=MagickFalse;
+ }
if (image->progress_monitor != (MagickProgressMonitor) NULL)
{
MagickBooleanType
@@ -1965,7 +1973,12 @@ MagickExport Image *SpliceImage(const Image *image,
proceed=SetImageProgress(image,SpliceImageTag,progress,
splice_image->rows);
if (proceed == MagickFalse)
- status=MagickFalse;
+ {
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+ #pragma omp critical (SpliceImage)
+#endif
+ status=MagickFalse;
+ }
}
}
#if defined(MAGICKCORE_OPENMP_SUPPORT)
@@ -1993,6 +2006,9 @@ MagickExport Image *SpliceImage(const Image *image,
exception);
if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL))
{
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+ #pragma omp critical (SpliceImage)
+#endif
status=MagickFalse;
continue;
}
@@ -2043,7 +2059,12 @@ MagickExport Image *SpliceImage(const Image *image,
q+=(ptrdiff_t) GetPixelChannels(splice_image);
}
if (SyncCacheViewAuthenticPixels(splice_view,exception) == MagickFalse)
- status=MagickFalse;
+ {
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+ #pragma omp critical (SpliceImage)
+#endif
+ status=MagickFalse;
+ }
if (image->progress_monitor != (MagickProgressMonitor) NULL)
{
MagickBooleanType
@@ -2056,7 +2077,12 @@ MagickExport Image *SpliceImage(const Image *image,
proceed=SetImageProgress(image,SpliceImageTag,progress,
splice_image->rows);
if (proceed == MagickFalse)
- status=MagickFalse;
+ {
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+ #pragma omp critical (SpliceImage)
+#endif
+ status=MagickFalse;
+ }
}
}
splice_view=DestroyCacheView(splice_view);