MagickExport MagickBooleanType SetQuantumDepth(const Image *image,
QuantumInfo *quantum_info,const size_t depth)
{
- MagickBooleanType
- status;
+ size_t
+ extent,
+ quantum;
/*
Allocate the quantum pixel buffer.
}
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));
}
\f
/*
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;
(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");