CVS update of imagemagick/coders (pnm.c)
Luciano Bello
luciano-guest at alioth.debian.org
Mon Mar 19 15:59:18 CET 2007
Date: Monday, March 19, 2007 @ 14:59:18
Author: luciano-guest
Path: /cvsroot/pkg-gmagick/imagemagick/coders
Modified: pnm.c
Fixing segfault in PNM coder. Based on http://bugs.debian.org/413037
-------+
pnm.c | 16 ++++++++++++++++
1 files changed, 16 insertions(+)
Index: imagemagick/coders/pnm.c
diff -u imagemagick/coders/pnm.c:1.1 imagemagick/coders/pnm.c:1.2
--- imagemagick/coders/pnm.c:1.1 Tue Feb 27 01:07:04 2007
+++ imagemagick/coders/pnm.c Mon Mar 19 14:59:18 2007
@@ -215,6 +215,20 @@
return(value);
}
+
+#define ValidateScalingIndex(image, index, max) \
+ do { \
+ if (index < 0 || index > max) \
+ ThrowReaderException(CorruptImageError,"CorruptImage"); \
+ } while (0)
+
+#define ValidateScalingPixel(image, pixel, max) \
+ do { \
+ ValidateScalingIndex(image, pixel.red, max); \
+ ValidateScalingIndex(image, pixel.green, max); \
+ ValidateScalingIndex(image, pixel.blue, max); \
+ } while (0)
+
static Image *ReadPNMImage(const ImageInfo *image_info,ExceptionInfo *exception)
{
#define PushCharPixel(pixel,p) \
@@ -420,6 +434,7 @@
for (x=0; x < (long) image->columns; x++)
{
intensity=PNMInteger(image,10);
+ ValidateScalingIndex(image, intensity, max_value);
if (scale != (Quantum *) NULL)
intensity=scale[intensity];
index=(IndexPacket) intensity;
@@ -462,6 +477,7 @@
pixel.red=PNMInteger(image,10);
pixel.green=PNMInteger(image,10);
pixel.blue=PNMInteger(image,10);
+ ValidateScalingPixel(image, pixel, max_value);
if (scale != (Quantum *) NULL)
{
pixel.red=scale[pixel.red];
More information about the pkg-gmagick-commit
mailing list