Commit b5624045e for imagemagick.org

commit b5624045ee023cba7bc7611b585da68287b43a0e
Author: Naveed Khan <164054284+rootvector2@users.noreply.github.com>
Date:   Thu Oct 29 20:29:12 2026 +0530

    stop montage directory walk at the terminating nul (#9075)

diff --git a/MagickCore/display.c b/MagickCore/display.c
index 81a0143e0..bc8a9b4d9 100644
--- a/MagickCore/display.c
+++ b/MagickCore/display.c
@@ -13280,7 +13280,7 @@ static Image *XTileImage(Display *display,XResourceInfo *resource_info,
       */
       tile=0;
       GetPixelInfo(image,&pixel);
-      for (p=image->directory; *p != '\0'; p++)
+      for (p=image->directory; *p != '\0'; )
       {
         CacheView
           *image_view;
@@ -13291,6 +13291,8 @@ static Image *XTileImage(Display *display,XResourceInfo *resource_info,
           q++;
         (void) CopyMagickString(filename,p,(size_t) (q-p+1));
         p=q;
+        if (*p == '\xff')
+          p++;
         if (IsPathAccessible(filename) != MagickFalse)
           {
             tile++;
diff --git a/MagickCore/identify.c b/MagickCore/identify.c
index a103eade1..81e143646 100644
--- a/MagickCore/identify.c
+++ b/MagickCore/identify.c
@@ -1364,7 +1364,7 @@ MagickExport MagickBooleanType IdentifyImage(Image *image,FILE *file,
       image_info=AcquireImageInfo();
       (void) CloneString(&image_info->size,"64x64");
       (void) FormatLocaleFile(file,"  Directory:\n");
-      for (d=image->directory; *d != '\0'; d++)
+      for (d=image->directory; *d != '\0'; )
       {
         q=d;
         while ((*q != '\xff') && (*q != '\0') &&
@@ -1372,6 +1372,8 @@ MagickExport MagickBooleanType IdentifyImage(Image *image,FILE *file,
           q++;
         (void) CopyMagickString(image_info->filename,d,(size_t) (q-d+1));
         d=q;
+        if (*d == '\xff')
+          d++;
         (void) FormatLocaleFile(file,"    %s",image_info->filename);
         handler=SetWarningHandler((WarningHandler) NULL);
         tile=StrictReadImage(image_info,exception);
diff --git a/coders/json.c b/coders/json.c
index 3751113d5..df93bfa4d 100644
--- a/coders/json.c
+++ b/coders/json.c
@@ -1542,7 +1542,7 @@ static MagickBooleanType EncodeImageAttributes(Image *image,FILE *file,
       image_info=AcquireImageInfo();
       (void) CloneString(&image_info->size,"64x64");
       (void) FormatLocaleFile(file,"    \"montageDirectory\": [");
-      for (p=image->directory; *p != '\0'; p++)
+      for (p=image->directory; *p != '\0'; )
       {
         q=p;
         while ((*q != '\xff') && (*q != '\0') &&
@@ -1550,6 +1550,8 @@ static MagickBooleanType EncodeImageAttributes(Image *image,FILE *file,
           q++;
         (void) CopyMagickString(image_info->filename,p,(size_t) (q-p+1));
         p=q;
+        if (*p == '\xff')
+          p++;
         JSONFormatLocaleFile(file,"{\n       \"name\": %s",
           image_info->filename);
         handler=SetWarningHandler((WarningHandler) NULL);
diff --git a/coders/yaml.c b/coders/yaml.c
index ba071180c..17ead9272 100644
--- a/coders/yaml.c
+++ b/coders/yaml.c
@@ -1511,7 +1511,7 @@ static MagickBooleanType EncodeImageAttributes(Image *image,FILE *file,
       image_info=AcquireImageInfo();
       (void) CloneString(&image_info->size,"64x64");
       (void) FormatLocaleFile(file,"    montageDirectory: ");
-      for (p=image->directory; *p != '\0'; p++)
+      for (p=image->directory; *p != '\0'; )
       {
         q=p;
         while ((*q != '\xff') && (*q != '\0') &&
@@ -1519,6 +1519,8 @@ static MagickBooleanType EncodeImageAttributes(Image *image,FILE *file,
           q++;
         (void) CopyMagickString(image_info->filename,p,(size_t) (q-p+1));
         p=q;
+        if (*p == '\xff')
+          p++;
         YAMLFormatLocaleFile(file,"\n       - name: %s",
           image_info->filename);
         handler=SetWarningHandler((WarningHandler) NULL);