From 56d8854d35f28716299844f42f9d42a7b4395938 Mon Sep 17 00:00:00 2001 From: cristy Date: Mon, 1 Dec 2014 01:13:30 +0000 Subject: [PATCH] --- MagickCore/quantum.c | 13 ++++++++----- coders/palm.c | 2 +- coders/psd.c | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/MagickCore/quantum.c b/MagickCore/quantum.c index a906aebac..d2ccb971e 100644 --- a/MagickCore/quantum.c +++ b/MagickCore/quantum.c @@ -645,8 +645,9 @@ MagickExport void SetQuantumAlphaType(QuantumInfo *quantum_info, MagickExport MagickBooleanType SetQuantumDepth(const Image *image, QuantumInfo *quantum_info,const size_t depth) { - MagickBooleanType - status; + size_t + extent, + quantum; /* Allocate the quantum pixel buffer. @@ -670,9 +671,11 @@ MagickExport MagickBooleanType SetQuantumDepth(const Image *image, } if (quantum_info->pixels != (unsigned char **) NULL) DestroyQuantumPixels(quantum_info); - status=AcquireQuantumPixels(quantum_info,(MaxPixelChannels+quantum_info->pad)* - image->columns*((quantum_info->depth+7)/8)); - return(status); + quantum=(quantum_info->pad+6)*(quantum_info->depth+7)/8; + extent=image->columns*quantum; + if (quantum != (extent/image->columns)) + return(MagickFalse); + return(AcquireQuantumPixels(quantum_info,extent)); } /* diff --git a/coders/palm.c b/coders/palm.c index 8bcedd5ed..0876352a2 100644 --- a/coders/palm.c +++ b/coders/palm.c @@ -329,7 +329,7 @@ static Image *ReadPALMImage(const ImageInfo *image_info, bytes_per_row=ReadBlobMSBShort(image); flags=ReadBlobMSBShort(image); bits_per_pixel=(size_t) ReadBlobByte(image); - if (bits_per_pixel > 16) + if ((bits_per_pixel == 0) || (bits_per_pixel > 16)) ThrowReaderException(CorruptImageError,"ImproperImageHeader"); version=(size_t) ReadBlobByte(image); (void) version; diff --git a/coders/psd.c b/coders/psd.c index 2188c9e80..b8e3cc503 100644 --- a/coders/psd.c +++ b/coders/psd.c @@ -1740,7 +1740,7 @@ static Image *ReadPSDImage(const ImageInfo *image_info, (void) LogMagickEvent(CoderEvent,GetMagickModule(), " reading image resource blocks - %.20g bytes",(double) ((MagickOffsetType) length)); - blocks=(unsigned char *) AcquireQuantumMemory((size_t) length, + blocks=(unsigned char *) AcquireQuantumMemory((size_t) length+16, sizeof(*blocks)); if (blocks == (unsigned char *) NULL) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); -- 2.40.0