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);