Commit aa104ff2e for imagemagick.org

commit aa104ff2e408bea23828e7a7a346f9080da4104b
Author: Cristy <urban-warrior@imagemagick.org>
Date:   Fri Sep 18 09:52:50 2026 -0400

    https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-xxrx-rjp3-27rj

diff --git a/coders/jpeg.c b/coders/jpeg.c
index e6a6ccfef..d47da2f0e 100644
--- a/coders/jpeg.c
+++ b/coders/jpeg.c
@@ -1424,17 +1424,25 @@ static void JPEGSetImageSamplingFactor(const struct jpeg_decompress_struct *jpeg
     }
     default:
     {
+      size_t
+        length;
+
+      ssize_t
+        i;
+
       (void) LogMagickEvent(CoderEvent,GetMagickModule(),"Colorspace: %d",
         jpeg_info->out_color_space);
-      (void) FormatLocaleString(sampling_factor,MagickPathExtent,
-        "%dx%d,%dx%d,%dx%d,%dx%d",jpeg_info->comp_info[0].h_samp_factor,
-        jpeg_info->comp_info[0].v_samp_factor,
-        jpeg_info->comp_info[1].h_samp_factor,
-        jpeg_info->comp_info[1].v_samp_factor,
-        jpeg_info->comp_info[2].h_samp_factor,
-        jpeg_info->comp_info[2].v_samp_factor,
-        jpeg_info->comp_info[3].h_samp_factor,
-        jpeg_info->comp_info[3].v_samp_factor);
+      (void) FormatLocaleString(sampling_factor,MagickPathExtent,"%dx%d",
+        jpeg_info->comp_info[0].h_samp_factor,
+        jpeg_info->comp_info[0].v_samp_factor);
+      length=strlen(sampling_factor);
+      for (i=1; (i < (ssize_t) jpeg_info->num_components) && (length < MagickPathExtent); i++)
+      {
+        (void) FormatLocaleString(sampling_factor+length,MagickPathExtent-
+          length,",%dx%d",jpeg_info->comp_info[i].h_samp_factor,
+          jpeg_info->comp_info[i].v_samp_factor);
+         length+=strlen(sampling_factor+length);
+      }
       break;
     }
   }