Commit 7d3a270ca for imagemagick.org
commit 7d3a270ca2d9542920a1045900dcbb5195f87fe6
Author: Cristy <urban-warrior@imagemagick.org>
Date: Wed Sep 16 12:48:05 2026 -0400
https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-w6hf-vvx5-4qmj
diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index cf2ec3fa2..ca820e69e 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -8825,17 +8825,28 @@ WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info,
}
if (LocaleCompare("process",option+1) == 0)
{
+#define DestroyArguments(arguments,number_arguments) \
+ do \
+ { \
+ ssize_t j = 0; \
+ for ( ; j < (ssize_t) (number_arguments); j++) \
+ (arguments)[j]=DestroyString((arguments)[j]); \
+ (arguments)=(char **) RelinquishMagickMemory(arguments); \
+ } while (0)
+
char
**arguments;
int
- j,
number_arguments;
(void) SyncImagesSettings(mogrify_info,*images,exception);
arguments=StringToArgv(argv[i+1],&number_arguments);
if ((arguments == (char **) NULL) || (number_arguments == 1))
- break;
+ {
+ DestroyArguments(arguments,number_arguments);
+ break;
+ }
if ((argc > 1) && (strchr(arguments[1],'=') != (char *) NULL))
{
char
@@ -8865,7 +8876,10 @@ WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info,
token=(char *) AcquireQuantumMemory(length+MagickPathExtent,
sizeof(*token));
if (token == (char *) NULL)
- break;
+ {
+ DestroyArguments(arguments,number_arguments);
+ break;
+ }
next=0;
argument=argv[i+1];
token_info=AcquireTokenInfo();
@@ -8882,14 +8896,13 @@ WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info,
exception);
}
token=DestroyString(token);
+ DestroyArguments(arguments,number_arguments);
break;
}
(void) SubstituteString(&arguments[1],"-","");
(void) InvokeDynamicImageFilter(arguments[1],&(*images),
number_arguments-2,(const char **) arguments+2,exception);
- for (j=0; j < number_arguments; j++)
- arguments[j]=DestroyString(arguments[j]);
- arguments=(char **) RelinquishMagickMemory(arguments);
+ DestroyArguments(arguments,number_arguments);
break;
}
break;
diff --git a/MagickWand/operation.c b/MagickWand/operation.c
index f3543eaa7..d1841ba55 100644
--- a/MagickWand/operation.c
+++ b/MagickWand/operation.c
@@ -4592,7 +4592,7 @@ static MagickBooleanType CLIListOperatorImages(MagickCLI *cli_wand,
}
if (LocaleCompare("process",option+1) == 0)
{
-#define DestroyArguments(arguments,argc) \
+#define DestroyArguments(arguments,number_arguments) \
do \
{ \
ssize_t j = 0; \