Commit a5c052188 for imagemagick.org

commit a5c052188fd423374f726bd368ef2a567d25d3c6
Author: Cristy <urban-warrior@imagemagick.org>
Date:   Sun Aug 2 21:11:31 2026 -0400

    get properties that might exceed 4096 characters

diff --git a/coders/tiff.c b/coders/tiff.c
index f0d9d22b9..966f8d385 100644
--- a/coders/tiff.c
+++ b/coders/tiff.c
@@ -733,12 +733,12 @@ static MagickBooleanType TIFFGetProperties(TIFF *tiff,Image *image,
   return(status);
 }

-static void TIFFSetImageProperties(TIFF *tiff,Image *image,const char *tag,
-  ExceptionInfo *exception)
+static MagickBooleanType TIFFSetImageProperties(TIFF *tiff,Image *image,
+  const char *tag,ExceptionInfo *exception)
 {
   char
-    buffer[MagickPathExtent],
-    filename[MagickPathExtent];
+    filename[MagickPathExtent],
+    *line;

   FILE
     *file;
@@ -746,6 +746,12 @@ static void TIFFSetImageProperties(TIFF *tiff,Image *image,const char *tag,
   int
     unique_file;

+  size_t
+    length;
+
+  ssize_t
+    count;
+
   /*
     Set EXIF or GPS image properties.
   */
@@ -756,39 +762,43 @@ static void TIFFSetImageProperties(TIFF *tiff,Image *image,const char *tag,
   if ((unique_file == -1) || (file == (FILE *) NULL))
     {
       (void) RelinquishUniqueFileResource(filename);
-      (void) ThrowMagickException(exception,GetMagickModule(),WandError,
+      (void) ThrowMagickException(exception,GetMagickModule(),FileOpenError,
         "UnableToCreateTemporaryFile","`%s'",filename);
-      return;
+      return(MagickFalse);
     }
   TIFFPrintDirectory(tiff,file,0);
   (void) fseek(file,0,SEEK_SET);
-  while (fgets(buffer,(int) sizeof(buffer),file) != NULL)
+  while ((count=getline(&line,&length,file)) != -1)
   {
     char
       *p,
-      property[MagickPathExtent],
-      value[MagickPathExtent];
+      property[MagickPathExtent];

-    (void) StripMagickString(buffer);
-    p=strchr(buffer,':');
+    (void) StripMagickString(line);
+    p=strchr(line,':');
     if (p == (char *) NULL)
       continue;
-    *p='\0';
-    (void) FormatLocaleString(property,MagickPathExtent,"%s%s",tag,buffer);
-    (void) FormatLocaleString(value,MagickPathExtent,"%s",p+1);
-    (void) StripMagickString(value);
-    (void) SetImageProperty(image,property,value,exception);
+    *p++='\0';
+    (void) FormatLocaleString(property,MagickPathExtent,"%s%s",tag,line);
+    (void) StripMagickString(p);
+    (void) SetImageProperty(image,property,p,exception);
   }
+  if (line != (char *) NULL)
+    free(line);
   (void) fclose(file);
   (void) RelinquishUniqueFileResource(filename);
+  return(MagickTrue);
 }

-static void TIFFGetEXIFProperties(TIFF *tiff,Image *image,
+static MagickBooleanType TIFFGetEXIFProperties(TIFF *tiff,Image *image,
   const ImageInfo* image_info,ExceptionInfo *exception)
 {
   const char
     *option;

+  MagickBooleanType
+    status = MagickTrue;
+
   tdir_t
     directory;

@@ -804,23 +814,27 @@ static void TIFFGetEXIFProperties(TIFF *tiff,Image *image,
   */
   option=GetImageOption(image_info,"tiff:exif-properties");
   if (IsStringFalse(option) != MagickFalse)
-    return;
+    return(MagickFalse);
   offset=0;
   if (TIFFGetField(tiff,TIFFTAG_EXIFIFD,&offset) != 1)
-    return;
+    return(MagickFalse);
   directory=TIFFCurrentDirectory(tiff);
   if (TIFFReadEXIFDirectory(tiff,offset) == 1)
-    TIFFSetImageProperties(tiff,image,"exif:",exception);
+    status=TIFFSetImageProperties(tiff,image,"exif:",exception);
   TIFFSetDirectory(tiff,directory);
+  return(status);
 }

-static void TIFFGetGPSProperties(TIFF *tiff,Image *image,
+static MagickBooleanType TIFFGetGPSProperties(TIFF *tiff,Image *image,
   const ImageInfo* image_info,ExceptionInfo *exception)
 {
 #if (TIFFLIB_VERSION >= 20210416)
   const char
     *option;

+  MagickBooleanType
+    status = MagickTrue;
+
   tdir_t
     directory;

@@ -836,14 +850,15 @@ static void TIFFGetGPSProperties(TIFF *tiff,Image *image,
   */
   option=GetImageOption(image_info,"tiff:gps-properties");
   if (IsStringFalse(option) != MagickFalse)
-    return;
+    return(MagickFalse);
   offset=0;
   if (TIFFGetField(tiff,TIFFTAG_GPSIFD,&offset) != 1)
-    return;
+    return(MagickFalse);
   directory=TIFFCurrentDirectory(tiff);
   if (TIFFReadGPSDirectory(tiff,offset) == 1)
-    TIFFSetImageProperties(tiff,image,"exif:GPS",exception);
+    status=TIFFSetImageProperties(tiff,image,"exif:GPS",exception);
   TIFFSetDirectory(tiff,directory);
+  return(status);
 #else
   magick_unreferenced(tiff);
   magick_unreferenced(image);
@@ -1462,8 +1477,8 @@ static Image *ReadTIFFImage(const ImageInfo *image_info,
         TIFFClose(tiff);
         return(DestroyImageList(image));
       }
-    TIFFGetEXIFProperties(tiff,image,image_info,exception);
-    TIFFGetGPSProperties(tiff,image,image_info,exception);
+    status=TIFFGetEXIFProperties(tiff,image,image_info,exception);
+    status=TIFFGetGPSProperties(tiff,image,image_info,exception);
     if ((TIFFGetFieldDefaulted(tiff,TIFFTAG_XRESOLUTION,&x_resolution,sans) == 1) &&
         (TIFFGetFieldDefaulted(tiff,TIFFTAG_YRESOLUTION,&y_resolution,sans) == 1))
       {