From e5d21380ac850f837068d4ac179f04f1621f2092 Mon Sep 17 00:00:00 2001 From: cristy Date: Sat, 29 Nov 2014 15:28:30 +0000 Subject: [PATCH] --- MagickCore/colormap-private.h | 14 ++++++++------ coders/viff.c | 19 +++++++++++++------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/MagickCore/colormap-private.h b/MagickCore/colormap-private.h index 03d56aa90..6be23e87d 100644 --- a/MagickCore/colormap-private.h +++ b/MagickCore/colormap-private.h @@ -26,14 +26,16 @@ extern "C" { #endif -static inline Quantum ConstrainColormapIndex(Image *image,const size_t index, +static inline ssize_t ConstrainColormapIndex(Image *image,const ssize_t index, ExceptionInfo *exception) { - if (index < image->colors) - return((Quantum) index); - (void) ThrowMagickException(exception,GetMagickModule(),CorruptImageError, - "InvalidColormapIndex","`%s'",image->filename); - return((Quantum) 0); + if ((index < 0) || (index >= image->colors)) + { + (void) ThrowMagickException(exception,GetMagickModule(),CorruptImageError, + "InvalidColormapIndex","`%s'",image->filename); + return(0); + } + return(index); } #if defined(__cplusplus) || defined(c_plusplus) diff --git a/coders/viff.c b/coders/viff.c index 90b679b64..13b2e0310 100644 --- a/coders/viff.c +++ b/coders/viff.c @@ -47,6 +47,7 @@ #include "MagickCore/color.h" #include "MagickCore/color-private.h" #include "MagickCore/colormap.h" +#include "MagickCore/colormap-private.h" #include "MagickCore/colorspace.h" #include "MagickCore/colorspace-private.h" #include "MagickCore/exception.h" @@ -674,12 +675,18 @@ static Image *ReadVIFFImage(const ImageInfo *image_info, SetPixelBlue(image,ScaleCharToQuantum(*(p+2*number_pixels)),q); if (image->colors != 0) { - SetPixelRed(image,image->colormap[(ssize_t) - GetPixelRed(image,q)].red,q); - SetPixelGreen(image,image->colormap[(ssize_t) - GetPixelGreen(image,q)].green,q); - SetPixelBlue(image,image->colormap[(ssize_t) - GetPixelBlue(image,q)].blue,q); + ssize_t + index; + + index=(ssize_t) GetPixelRed(image,q); + SetPixelRed(image,image->colormap[ + ConstrainColormapIndex(image,index,exception)].red,q); + index=(ssize_t) GetPixelGreen(image,q); + SetPixelGreen(image,image->colormap[ + ConstrainColormapIndex(image,index,exception)].green,q); + index=(ssize_t) GetPixelBlue(image,q); + SetPixelBlue(image,image->colormap[ + ConstrainColormapIndex(image,index,exception)].blue,q); } SetPixelAlpha(image,image->alpha_trait == BlendPixelTrait ? ScaleCharToQuantum(*(p+number_pixels*3)) : OpaqueAlpha,q); -- 2.40.0