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