Commit caaad7177 for imagemagick.org

commit caaad7177b5f61ee2a0c3a07bb554c3cc46afa40
Author: Cristy <urban-warrior@imagemagick.org>
Date:   Sun Sep 6 07:38:14 2026 -0400

    create a secure temporary filename

diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index 98c32cc5f..e7d876f3c 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -3904,6 +3904,9 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info,
         if ((LocaleCompare(image->filename,"-") != 0) &&
             (IsPathWritable(image->filename) != MagickFalse))
           {
+            int
+              file = -1;
+
             RandomInfo
               *random_info;

@@ -3913,7 +3916,7 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info,
             random_info=AcquireRandomInfo();
             (void) CopyMagickString(backup_filename,image->filename,
               MagickPathExtent);
-            for (j=0; j < 100; j++)
+            for (j=0; j < TMP_MAX; j++)
             {
               StringInfo
                 *key_info;
@@ -3926,15 +3929,19 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info,
                 break;
               key_bytes=GetStringInfoDatum(key_info);
               (void) FormatLocaleString(backup_filename,MagickPathExtent,
-                "%s~%02x%02x%02x%02x",image->filename,key_bytes[0],key_bytes[1],
-                key_bytes[2],key_bytes[3]);
+                "%s-%02x%02x%02x%02x~",image->filename,key_bytes[0],
+                key_bytes[1],key_bytes[2],key_bytes[3]);
               key_info=DestroyStringInfo(key_info);
-              if (IsPathAccessible(backup_filename) == MagickFalse)
+              file=open_utf8(backup_filename,O_RDWR | O_CREAT | O_EXCL |
+                O_BINARY | O_NOFOLLOW,S_MODE);
+              if ((file >= 0) || (errno != EEXIST))
                 break;
             }
             random_info=DestroyRandomInfo(random_info);
-            if (IsPathAccessible(backup_filename) != MagickFalse)
+            if (file < 0)
               *backup_filename='\0';
+            else
+              file=close(file)-1;
           }
         /*
           Write transmogrified image to disk.