File GraphicsMagick-buffer-overflow-map.patch of Package GraphicsMagick.7727
Index: GraphicsMagick-1.3.25/coders/map.c
===================================================================
--- GraphicsMagick-1.3.25.orig/coders/map.c 2015-10-04 21:35:31.000000000 +0200
+++ GraphicsMagick-1.3.25/coders/map.c 2016-11-29 15:53:54.330024445 +0100
@@ -366,20 +366,20 @@ static unsigned int WriteMAPImage(const
if (image->colors <= 256)
for (i=0; i < (long) image->colors; i++)
{
- *q++=image->colormap[i].red;
- *q++=image->colormap[i].green;
- *q++=image->colormap[i].blue;
+ *q++=(unsigned char) ScaleQuantumToChar(image->colormap[i].red);
+ *q++=(unsigned char) ScaleQuantumToChar(image->colormap[i].green);
+ *q++=(unsigned char) ScaleQuantumToChar(image->colormap[i].blue);
}
#if QuantumDepth > 8
else
for (i=0; i < (long) image->colors; i++)
{
- *q++=image->colormap[i].red >> 8;
- *q++=image->colormap[i].red & 0xff;
- *q++=image->colormap[i].green >> 8;
- *q++=image->colormap[i].green & 0xff;
- *q++=image->colormap[i].blue >> 8;
- *q++=image->colormap[i].blue & 0xff;
+ *q++=(unsigned char) (ScaleQuantumToShort(image->colormap[i].red) >> 8);
+ *q++=(unsigned char) (ScaleQuantumToShort(image->colormap[i].red) & 0xff);
+ *q++=(unsigned char) (ScaleQuantumToShort(image->colormap[i].green) >> 8);
+ *q++=(unsigned char) (ScaleQuantumToShort(image->colormap[i].green) & 0xff);;
+ *q++=(unsigned char) (ScaleQuantumToShort(image->colormap[i].blue) >> 8);
+ *q++=(unsigned char) (ScaleQuantumToShort(image->colormap[i].blue) & 0xff);
}
#endif /* QuantumDepth > 8 */
if (WriteBlob(image,packet_size*image->colors,(char *) colormap) !=