(bits_per_pixel != 16))
ThrowReaderException(CorruptImageError,"UnrecognizedBitsPerPixel");
version=(size_t) ReadBlobByte(image);
- (void) version;
+ if ((version != 0) && (version != 1) && (version != 2))
+ ThrowReaderException(CorruptImageError,"FileFormatVersionMismatch");
nextDepthOffset=(size_t) ReadBlobMSBShort(image);
transparentIndex=(size_t) ReadBlobByte(image);
compressionType=(size_t) ReadBlobByte(image);
}
}
else
+ for (i=0; i < (ssize_t) (1L << bits_per_pixel); i++)
{
- for (i=0; i < (ssize_t) (1L << bits_per_pixel); i++)
- {
- index=ConstrainColormapIndex(image,255-i,exception);
- image->colormap[index].red=(MagickRealType)
- ScaleCharToQuantum(PalmPalette[i][0]);
- image->colormap[index].green=(MagickRealType)
- ScaleCharToQuantum(PalmPalette[i][1]);
- image->colormap[index].blue=(MagickRealType)
- ScaleCharToQuantum(PalmPalette[i][2]);
- }
+ index=ConstrainColormapIndex(image,255-i,exception);
+ image->colormap[index].red=(MagickRealType)
+ ScaleCharToQuantum(PalmPalette[i][0]);
+ image->colormap[index].green=(MagickRealType)
+ ScaleCharToQuantum(PalmPalette[i][1]);
+ image->colormap[index].blue=(MagickRealType)
+ ScaleCharToQuantum(PalmPalette[i][2]);
}
}
if (flags & PALM_IS_COMPRESSED_FLAG)
ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
}
mask=(size_t) (1U << bits_per_pixel)-1;
- for (y = 0; y < (ssize_t) image->rows; y++)
+ for (y=0; y < (ssize_t) image->rows; y++)
{
if ((flags & PALM_IS_COMPRESSED_FLAG) == 0)
{
/* TODO move out of loop! */
image->compression=NoCompression;
count=ReadBlob(image,bytes_per_row,one_row);
+ if (count != (ssize_t) bytes_per_row)
+ break;
}
else
{
for (i=0; i < (ssize_t) bytes_per_row; i+=8)
{
count=(ssize_t) ReadBlobByte(image);
+ if (count < 0)
+ break;
byte=(size_t) MagickMin((ssize_t) bytes_per_row-i,8);
for (bit=0; bit < byte; bit++)
{
*/
totalOffset+=(MagickOffsetType) (nextDepthOffset*4);
if (totalOffset >= (MagickOffsetType) GetBlobSize(image))
- {
- ThrowReaderException(CorruptImageError,"ImproperImageHeader");
- }
+ ThrowReaderException(CorruptImageError,"ImproperImageHeader")
else
- {
- seekNextDepth=SeekBlob(image,totalOffset,SEEK_SET);
- }
+ seekNextDepth=SeekBlob(image,totalOffset,SEEK_SET);
if (seekNextDepth != totalOffset)
ThrowReaderException(CorruptImageError,"ImproperImageHeader");
/*