File ImageMagick-CVE-2014-9841.patch of Package ImageMagick.openSUSE_13.2_Update
--- a/coders/psd.c
+++ b/coders/psd.c
@@ -1218,9 +1218,10 @@ static MagickStatusType ReadPSDLayers(Image *image,const ImageInfo *image_info,
count=ReadBlob(image,4,(unsigned char *) type);
if ((count == 0) || (LocaleNCompare(type,"8BIM",4) != 0))
{
- if (DiscardBlobBytes(image,(MagickSizeType) (size-quantum-8)) == MagickFalse)
- ThrowFileException(exception,CorruptImageError,
- "UnexpectedEndOfFile",image->filename);
+ if (DiscardBlobBytes(image,(MagickSizeType) (size-quantum-8)) ==
+ MagickFalse)
+ ThrowBinaryException(CorruptImageError,"UnexpectedEndOfFile",
+ image->filename);
}
else
{
@@ -1228,9 +1229,10 @@ static MagickStatusType ReadPSDLayers(Image *image,const ImageInfo *image_info,
if ((count != 0) && (LocaleNCompare(type,"Lr16",4) == 0))
size=GetPSDSize(psd_info,image);
else
- if (DiscardBlobBytes(image,(MagickSizeType) (size-quantum-12)) == MagickFalse)
- ThrowFileException(exception,CorruptImageError,
- "UnexpectedEndOfFile",image->filename);
+ if (DiscardBlobBytes(image,(MagickSizeType) (size-quantum-12)) ==
+ MagickFalse)
+ ThrowBinaryException(CorruptImageError,"UnexpectedEndOfFile",
+ image->filename);
}
}
@@ -1261,7 +1263,8 @@ static MagickStatusType ReadPSDLayers(Image *image,const ImageInfo *image_info,
" image contains %.20g layers",(double) number_layers);
if (number_layers == 0)
- return(MagickFalse);
+ ThrowBinaryException(CorruptImageError,"InvalidNumberOfLayers",
+ image->filename);
layer_info=(LayerInfo *) AcquireQuantumMemory((size_t) number_layers,
sizeof(*layer_info));
@@ -1375,8 +1378,8 @@ static MagickStatusType ReadPSDLayers(Image *image,const ImageInfo *image_info,
if (DiscardBlobBytes(image,(MagickSizeType) (length-16)) == MagickFalse)
{
layer_info=DestroyLayerInfo(layer_info,number_layers);
- ThrowFileException(exception,CorruptImageError,
- "UnexpectedEndOfFile",image->filename);
+ ThrowBinaryException(CorruptImageError,"UnexpectedEndOfFile",
+ image->filename);
}
}
length=ReadBlobMSBLong(image);