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) !=
openSUSE Build Service is sponsored by