From: Dirk Lemstra Date: Thu, 31 Aug 2017 18:49:19 +0000 (+0200) Subject: Slightly different fix for #714 X-Git-Tag: 7.0.7-0~26 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=04a567494786d5bb50894fc8bb8fea0cf496bea8;p=imagemagick Slightly different fix for #714 --- diff --git a/coders/psd.c b/coders/psd.c index a29f6ac3e..88a63e577 100644 --- a/coders/psd.c +++ b/coders/psd.c @@ -1323,10 +1323,10 @@ static MagickBooleanType ReadPSDChannel(Image *image, if ((layer_info->channel_info[channel].type != -2) || (layer_info->mask.flags > 2) || ((layer_info->mask.flags & 0x02) && (IsStringTrue(option) == MagickFalse))) - { - SeekBlob(image,layer_info->channel_info[channel].size-2,SEEK_CUR); - return(MagickTrue); - } + { + SeekBlob(image,layer_info->channel_info[channel].size-2,SEEK_CUR); + return(MagickTrue); + } mask=CloneImage(image,layer_info->mask.page.width, layer_info->mask.page.height,MagickFalse,exception); if (mask != (Image *) NULL) @@ -1701,24 +1701,12 @@ static MagickBooleanType ReadPSDLayersInternal(Image *image, (void) LogMagickEvent(CoderEvent,GetMagickModule(), " layer blending ranges: length=%.20g",(double) ((MagickOffsetType) length)); - /* - We read it, but don't use it... - */ - for (j=0; j < (ssize_t) length; j+=8) - { - size_t blend_source=ReadBlobLong(image); - size_t blend_dest=ReadBlobLong(image); - if (EOFBlob(image) != MagickFalse) - { - layer_info=DestroyLayerInfo(layer_info,number_layers); - ThrowBinaryException(CorruptImageError, - "InsufficientImageDataInFile",image->filename); - } - if (image->debug != MagickFalse) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " source(%x), dest(%x)",(unsigned int) - blend_source,(unsigned int) blend_dest); - } + if (DiscardBlobBytes(image,length) == MagickFalse) + { + layer_info=DestroyLayerInfo(layer_info,number_layers); + ThrowBinaryException(CorruptImageError, + "UnexpectedEndOfFile",image->filename); + } } /* Layer name.