]> granicus.if.org Git - imagemagick/commitdiff
https://github.com/ImageMagick/ImageMagick/issues/653
authorCristy <urban-warrior@imagemagick.org>
Mon, 7 Aug 2017 19:09:10 +0000 (15:09 -0400)
committerCristy <urban-warrior@imagemagick.org>
Mon, 7 Aug 2017 19:09:10 +0000 (15:09 -0400)
coders/viff.c

index 703035c03be4379e4735064bac8671452a3cc28a..3f971f9a26f9531bfe237b3e49facb6141d9624a 100644 (file)
@@ -511,6 +511,8 @@ static Image *ReadVIFFImage(const ImageInfo *image_info,
           ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
         max_packets=(size_t) (number_pixels*viff_info.number_data_bands);
       }
+    if ((bytes_per_pixel*max_packets) > GetBlobSize(image))
+      ThrowReaderException(CorruptImageError,"ImproperImageHeader");
     pixels=(unsigned char *) AcquireQuantumMemory(MagickMax(number_pixels,
       max_packets),bytes_per_pixel*sizeof(*pixels));
     if (pixels == (unsigned char *) NULL)
@@ -801,10 +803,12 @@ ModuleExport size_t RegisterVIFFImage(void)
   entry->decoder=(DecodeImageHandler *) ReadVIFFImage;
   entry->encoder=(EncodeImageHandler *) WriteVIFFImage;
   entry->magick=(IsImageFormatHandler *) IsVIFF;
+  entry->flags|=CoderDecoderSeekableStreamFlag;
   (void) RegisterMagickInfo(entry);
   entry=AcquireMagickInfo("VIFF","XV","Khoros Visualization image");
   entry->decoder=(DecodeImageHandler *) ReadVIFFImage;
   entry->encoder=(EncodeImageHandler *) WriteVIFFImage;
+  entry->flags|=CoderDecoderSeekableStreamFlag;
   (void) RegisterMagickInfo(entry);
   return(MagickImageCoderSignature);
 }