Commit 951f6b094 for imagemagick.org

commit 951f6b0940224afc469f6a72503d6e011c688d02
Author: Dirk Lemstra <dirk@lemstra.org>
Date:   Mon Jan 12 18:21:15 2026 +0100

    Fixed memory leak that happens when someone creates a corrupt ImagemagickOpenCLDeviceProfile.xml file (GHSA-qp59-x883-77qv)

diff --git a/MagickCore/opencl.c b/MagickCore/opencl.c
index dd47e304d..78ddf1aad 100644
--- a/MagickCore/opencl.c
+++ b/MagickCore/opencl.c
@@ -751,6 +751,21 @@ MagickPrivate cl_kernel AcquireOpenCLKernel(MagickCLDevice device,
 */

 #if !MAGICKCORE_ZERO_CONFIGURATION_SUPPORT
+static MagickCLDeviceBenchmark* RelinquishDeviceBenchmark(
+  MagickCLDeviceBenchmark *device_benchmark)
+{
+  device_benchmark->platform_name=(char *) RelinquishMagickMemory(
+    device_benchmark->platform_name);
+  device_benchmark->vendor_name=(char *) RelinquishMagickMemory(
+    device_benchmark->vendor_name);
+  device_benchmark->name=(char *) RelinquishMagickMemory(
+    device_benchmark->name);
+  device_benchmark->version=(char *) RelinquishMagickMemory(
+    device_benchmark->version);
+  return((MagickCLDeviceBenchmark *) RelinquishMagickMemory(
+    device_benchmark));
+}
+
 static void LoadOpenCLDeviceBenchmark(MagickCLEnv clEnv,const char *xml)
 {
   char
@@ -836,17 +851,7 @@ static void LoadOpenCLDeviceBenchmark(MagickCLEnv clEnv,const char *xml)
                 }
               }
           }
-
-        device_benchmark->platform_name=(char *) RelinquishMagickMemory(
-          device_benchmark->platform_name);
-        device_benchmark->vendor_name=(char *) RelinquishMagickMemory(
-          device_benchmark->vendor_name);
-        device_benchmark->name=(char *) RelinquishMagickMemory(
-          device_benchmark->name);
-        device_benchmark->version=(char *) RelinquishMagickMemory(
-          device_benchmark->version);
-        device_benchmark=(MagickCLDeviceBenchmark *) RelinquishMagickMemory(
-          device_benchmark);
+        device_benchmark=RelinquishDeviceBenchmark(device_benchmark);
         continue;
       }
     (void) GetNextToken(q,(const char **) NULL,extent,token);
@@ -906,8 +911,7 @@ static void LoadOpenCLDeviceBenchmark(MagickCLEnv clEnv,const char *xml)
     }
   }
   token=(char *) RelinquishMagickMemory(token);
-  device_benchmark=(MagickCLDeviceBenchmark *) RelinquishMagickMemory(
-    device_benchmark);
+  device_benchmark=RelinquishDeviceBenchmark(device_benchmark);
 }

 static MagickBooleanType CanWriteProfileToFile(const char *filename)