File ImageMagick-CVE-2021-20224.patch of Package ImageMagick.30356
From 5af1dffa4b6ab984b5f13d1e91c95760d75f12a6 Mon Sep 17 00:00:00 2001
From: ruc_zhangxiaohui <553441439@qq.com>
Date: Thu, 7 Jan 2021 07:15:12 +0800
Subject: [PATCH] outside the range of representable values of type 'unsigned
char' (#3083)
Co-authored-by: Zhang Xiaohui <ruc_zhangxiaohui@163.com>
---
MagickCore/quantum-export.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
Index: ImageMagick-7.0.7-34/MagickCore/quantum-export.c
===================================================================
--- ImageMagick-7.0.7-34.orig/MagickCore/quantum-export.c
+++ ImageMagick-7.0.7-34/MagickCore/quantum-export.c
@@ -2529,28 +2529,28 @@ static void ExportIndexQuantum(const Ima
for (x=((ssize_t) number_pixels-7); x > 0; x-=8)
{
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q=((pixel & 0x01) << 7);
p+=GetPixelChannels(image);
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q|=((pixel & 0x01) << 6);
p+=GetPixelChannels(image);
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q|=((pixel & 0x01) << 5);
p+=GetPixelChannels(image);
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q|=((pixel & 0x01) << 4);
p+=GetPixelChannels(image);
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q|=((pixel & 0x01) << 3);
p+=GetPixelChannels(image);
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q|=((pixel & 0x01) << 2);
p+=GetPixelChannels(image);
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q|=((pixel & 0x01) << 1);
p+=GetPixelChannels(image);
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q|=((pixel & 0x01) << 0);
p+=GetPixelChannels(image);
q++;
@@ -2560,7 +2560,7 @@ static void ExportIndexQuantum(const Ima
*q='\0';
for (bit=7; bit >= (ssize_t) (8-(number_pixels % 8)); bit--)
{
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q|=((pixel & 0x01) << (unsigned char) bit);
p+=GetPixelChannels(image);
}
@@ -2575,17 +2575,17 @@ static void ExportIndexQuantum(const Ima
for (x=0; x < (ssize_t) (number_pixels-1) ; x+=2)
{
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q=((pixel & 0xf) << 4);
p+=GetPixelChannels(image);
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q|=((pixel & 0xf) << 0);
p+=GetPixelChannels(image);
q++;
}
if ((number_pixels % 2) != 0)
{
- pixel=(unsigned char) GetPixelIndex(image,p);
+ pixel=(unsigned char) ((ssize_t) GetPixelIndex(image,p));
*q=((pixel & 0xf) << 4);
p+=GetPixelChannels(image);
q++;
@@ -2596,7 +2596,7 @@ static void ExportIndexQuantum(const Ima
{
for (x=0; x < (ssize_t) number_pixels; x++)
{
- q=PopCharPixel((unsigned char) GetPixelIndex(image,p),q);
+ q=PopCharPixel((unsigned char) ((ssize_t) GetPixelIndex(image,p)),q);
p+=GetPixelChannels(image);
q+=quantum_info->pad;
}