File ImageMagick-CVE-2025-55160.patch of Package ImageMagick.40075

From 63d8769dd6a8f32f4096c71be9e08a2c081e47da Mon Sep 17 00:00:00 2001
From: Cristy <urban-warrior@imagemagick.org>
Date: Sun, 10 Aug 2025 08:28:28 -0400
Subject: [PATCH] 
 https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-6hgw-6x87-578x

---
 MagickCore/artifact.c | 17 ++++++++++++++++-
 MagickCore/option.c   | 17 ++++++++++++++++-
 MagickCore/profile.c  | 19 ++++++++++++++++++-
 MagickCore/property.c | 18 ++++++++++++++++--
 4 files changed, 66 insertions(+), 5 deletions(-)

Index: ImageMagick-7.1.0-9/MagickCore/artifact.c
===================================================================
--- ImageMagick-7.1.0-9.orig/MagickCore/artifact.c
+++ ImageMagick-7.1.0-9/MagickCore/artifact.c
@@ -99,6 +99,21 @@
 %    o clone_image: the source image for artifacts to clone.
 %
 */
+
+typedef char
+  *(*CloneKeyFunc)(const char *),
+  *(*CloneValueFunc)(const char *);
+
+static inline void *CloneArtifactKey(void *key)
+{
+  return((void *) ((CloneKeyFunc) ConstantString)((const char *) key));
+}
+
+static inline void *CloneArtifactValue(void *value)
+{
+  return((void *) ((CloneValueFunc) ConstantString)((const char *) value));
+}
+
 MagickExport MagickBooleanType CloneImageArtifacts(Image *image,
   const Image *clone_image)
 {
@@ -116,7 +131,7 @@ MagickExport MagickBooleanType CloneImag
       if (image->artifacts != (void *) NULL)
         DestroyImageArtifacts(image);
       image->artifacts=CloneSplayTree((SplayTreeInfo *) clone_image->artifacts,
-        (void *(*)(void *)) ConstantString,(void *(*)(void *)) ConstantString);
+        CloneArtifactKey,CloneArtifactValue);
     }
   return(MagickTrue);
 }
Index: ImageMagick-7.1.0-9/MagickCore/option.c
===================================================================
--- ImageMagick-7.1.0-9.orig/MagickCore/option.c
+++ ImageMagick-7.1.0-9/MagickCore/option.c
@@ -2208,6 +2208,21 @@ static const OptionInfo
 %    o clone_info: the source image info for options to clone.
 %
 */
+
+typedef char
+  *(*CloneKeyFunc)(const char *),
+  *(*CloneValueFunc)(const char *);
+
+static inline void *CloneOptionKey(void *key)
+{
+  return((void *) ((CloneKeyFunc) ConstantString)((const char *) key));
+}
+
+static inline void *CloneOptionValue(void *value)
+{
+  return((void *) ((CloneValueFunc) ConstantString)((const char *) value));
+}
+
 MagickExport MagickBooleanType CloneImageOptions(ImageInfo *image_info,
   const ImageInfo *clone_info)
 {
@@ -2223,7 +2238,7 @@ MagickExport MagickBooleanType CloneImag
       if (image_info->options != (void *) NULL)
         DestroyImageOptions(image_info);
       image_info->options=CloneSplayTree((SplayTreeInfo *) clone_info->options,
-        (void *(*)(void *)) ConstantString,(void *(*)(void *)) ConstantString);
+        CloneOptionKey,CloneOptionValue);
     }
   return(MagickTrue);
 }
Index: ImageMagick-7.1.0-9/MagickCore/profile.c
===================================================================
--- ImageMagick-7.1.0-9.orig/MagickCore/profile.c
+++ ImageMagick-7.1.0-9/MagickCore/profile.c
@@ -149,6 +149,23 @@ typedef struct _CMSExceptionInfo
 %    o clone_image: the clone image.
 %
 */
+
+typedef char
+  *(*CloneKeyFunc)(const char *);
+
+typedef StringInfo
+  *(*CloneValueFunc)(const StringInfo *);
+
+static inline void *CloneProfileKey(void *key)
+{
+  return((void *) ((CloneKeyFunc) ConstantString)((const char *) key));
+}
+
+static inline void *CloneProfileValue(void *value)
+{
+  return((void *) ((CloneValueFunc) CloneStringInfo)((const StringInfo *) value));
+}
+
 MagickExport MagickBooleanType CloneImageProfiles(Image *image,
   const Image *clone_image)
 {
@@ -163,7 +180,7 @@ MagickExport MagickBooleanType CloneImag
       if (image->profiles != (void *) NULL)
         DestroyImageProfiles(image);
       image->profiles=CloneSplayTree((SplayTreeInfo *) clone_image->profiles,
-        (void *(*)(void *)) ConstantString,(void *(*)(void *)) CloneStringInfo);
+        CloneProfileKey,CloneProfileValue);
     }
   return(MagickTrue);
 }
Index: ImageMagick-7.1.0-9/MagickCore/property.c
===================================================================
--- ImageMagick-7.1.0-9.orig/MagickCore/property.c
+++ ImageMagick-7.1.0-9/MagickCore/property.c
@@ -131,6 +131,21 @@
 %    o clone_image: the clone image.
 %
 */
+
+typedef char
+  *(*CloneKeyFunc)(const char *),
+  *(*CloneValueFunc)(const char *);
+
+static inline void *ClonePropertyKey(void *key)
+{
+  return((void *) ((CloneKeyFunc) ConstantString)((const char *) key));
+}
+
+static inline void *ClonePropertyValue(void *value)
+{
+  return((void *) ((CloneValueFunc) ConstantString)((const char *) value));
+}
+
 MagickExport MagickBooleanType CloneImageProperties(Image *image,
   const Image *clone_image)
 {
@@ -194,8 +209,7 @@ MagickExport MagickBooleanType CloneImag
       if (image->properties != (void *) NULL)
         DestroyImageProperties(image);
       image->properties=CloneSplayTree((SplayTreeInfo *)
-        clone_image->properties,(void *(*)(void *)) ConstantString,
-        (void *(*)(void *)) ConstantString);
+        clone_image->properties,ClonePropertyKey,ClonePropertyValue);
     }
   return(MagickTrue);
 }
openSUSE Build Service is sponsored by