Commit 22149077f for imagemagick.org

commit 22149077fab442950bc738001a5eef7fd08c5dfe
Author: Cristy <urban-warrior@imagemagick.org>
Date:   Tue Nov 10 14:22:21 2026 -0500

    https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-cf7p-m88c-h9jh

diff --git a/MagickCore/quantum-export.c b/MagickCore/quantum-export.c
index f0839981f..d65aa6714 100644
--- a/MagickCore/quantum-export.c
+++ b/MagickCore/quantum-export.c
@@ -465,6 +465,8 @@ static void ExportBGRQuantum(const Image *image,QuantumInfo *quantum_info,
             }
             q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
               q);
+            if ((x % 3) == 2)
+              q+=(ptrdiff_t) quantum_info->pad;
             switch ((x+1) % 3)
             {
               default:
@@ -490,7 +492,8 @@ static void ExportBGRQuantum(const Image *image,QuantumInfo *quantum_info,
             }
             q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
               q);
-            q+=(ptrdiff_t) quantum_info->pad;
+            if (((x+1) % 3) == 2)
+              q+=(ptrdiff_t) quantum_info->pad;
           }
           for (bit=0; bit < (ssize_t) (3*number_pixels % 2); bit++)
           {
@@ -519,7 +522,8 @@ static void ExportBGRQuantum(const Image *image,QuantumInfo *quantum_info,
             }
             q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
               q);
-            q+=(ptrdiff_t) quantum_info->pad;
+            if (((x+bit) % 3) == 2)
+              q+=(ptrdiff_t) quantum_info->pad;
           }
           if (bit != 0)
             p+=(ptrdiff_t) GetPixelChannels(image);
@@ -2971,6 +2975,8 @@ static void ExportRGBQuantum(const Image *image,QuantumInfo *quantum_info,
             }
             q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
               q);
+            if ((x % 3) == 2)
+              q+=(ptrdiff_t) quantum_info->pad;
             switch ((x+1) % 3)
             {
               default:
@@ -2996,7 +3002,8 @@ static void ExportRGBQuantum(const Image *image,QuantumInfo *quantum_info,
             }
             q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
               q);
-            q+=(ptrdiff_t) quantum_info->pad;
+            if (((x+1) % 3) == 2)
+              q+=(ptrdiff_t) quantum_info->pad;
           }
           for (bit=0; bit < (ssize_t) (3*number_pixels % 2); bit++)
           {
@@ -3025,7 +3032,8 @@ static void ExportRGBQuantum(const Image *image,QuantumInfo *quantum_info,
             }
             q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
               q);
-            q+=(ptrdiff_t) quantum_info->pad;
+            if (((x+bit) % 3) == 2)
+              q+=(ptrdiff_t) quantum_info->pad;
           }
           if (bit != 0)
             p+=(ptrdiff_t) GetPixelChannels(image);
diff --git a/MagickCore/quantum-import.c b/MagickCore/quantum-import.c
index 77307a9dd..d0a1ab1bc 100644
--- a/MagickCore/quantum-import.c
+++ b/MagickCore/quantum-import.c
@@ -562,6 +562,7 @@ static void ImportBGRQuantum(const Image *image,QuantumInfo *quantum_info,
                 SetPixelBlue(image,ScaleAnyToQuantum((QuantumAny) (pixel >> 4),
                   range),q);
                 q+=(ptrdiff_t) GetPixelChannels(image);
+                p+=(ptrdiff_t) quantum_info->pad;
                 break;
               }
             }
@@ -586,10 +587,10 @@ static void ImportBGRQuantum(const Image *image,QuantumInfo *quantum_info,
                 SetPixelBlue(image,ScaleAnyToQuantum((QuantumAny) (pixel >> 4),
                   range),q);
                 q+=(ptrdiff_t) GetPixelChannels(image);
+                p+=(ptrdiff_t) quantum_info->pad;
                 break;
               }
             }
-            p+=(ptrdiff_t) quantum_info->pad;
           }
           for (bit=0; bit < (ssize_t) (3*number_pixels % 2); bit++)
           {
@@ -614,10 +615,10 @@ static void ImportBGRQuantum(const Image *image,QuantumInfo *quantum_info,
                 SetPixelBlue(image,ScaleAnyToQuantum((QuantumAny) (pixel >> 4),
                   range),q);
                 q+=(ptrdiff_t) GetPixelChannels(image);
+                p+=(ptrdiff_t) quantum_info->pad;
                 break;
               }
             }
-            p+=(ptrdiff_t) quantum_info->pad;
           }
           if (bit != 0)
             p++;
@@ -3543,6 +3544,7 @@ static void ImportRGBQuantum(const Image *image,QuantumInfo *quantum_info,
                 SetPixelBlue(image,ScaleAnyToQuantum((QuantumAny) (pixel >> 4),
                   range),q);
                 q+=(ptrdiff_t) GetPixelChannels(image);
+                p+=(ptrdiff_t) quantum_info->pad;
                 break;
               }
             }
@@ -3567,10 +3569,10 @@ static void ImportRGBQuantum(const Image *image,QuantumInfo *quantum_info,
                 SetPixelBlue(image,ScaleAnyToQuantum((QuantumAny) (pixel >> 4),
                   range),q);
                 q+=(ptrdiff_t) GetPixelChannels(image);
+                p+=(ptrdiff_t) quantum_info->pad;
                 break;
               }
             }
-            p+=(ptrdiff_t) quantum_info->pad;
           }
           for (bit=0; bit < (ssize_t) (3*number_pixels % 2); bit++)
           {
@@ -3595,10 +3597,10 @@ static void ImportRGBQuantum(const Image *image,QuantumInfo *quantum_info,
                 SetPixelBlue(image,ScaleAnyToQuantum((QuantumAny) (pixel >> 4),
                   range),q);
                 q+=(ptrdiff_t) GetPixelChannels(image);
+                p+=(ptrdiff_t) quantum_info->pad;
                 break;
               }
             }
-            p+=(ptrdiff_t) quantum_info->pad;
           }
           if (bit != 0)
             p++;