From: Cristy Date: Tue, 8 Aug 2017 21:36:17 +0000 (-0400) Subject: https://github.com/ImageMagick/ImageMagick/issues/659 X-Git-Tag: 7.0.6-6~13 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d96b55ea41e71de43663818ccd17c6af3fa6c4fd;p=imagemagick https://github.com/ImageMagick/ImageMagick/issues/659 --- diff --git a/coders/xcf.c b/coders/xcf.c index 1d838bd36..8f7a67e1f 100644 --- a/coders/xcf.c +++ b/coders/xcf.c @@ -781,6 +781,9 @@ static MagickBooleanType ReadOneLayer(const ImageInfo *image_info,Image* image, XCFDocInfo* inDocInfo,XCFLayerInfo *outLayer,const ssize_t layer, ExceptionInfo *exception) { + MagickBooleanType + status; + MagickOffsetType offset; @@ -914,6 +917,13 @@ static MagickBooleanType ReadOneLayer(const ImageInfo *image_info,Image* image, exception); if (outLayer->image == (Image *) NULL) return(MagickFalse); + status=SetImageExtent(outLayer->image,outLayer->image->columns, + outLayer->image->rows,exception); + if (status == MagickFalse) + { + outLayer->image=DestroyImageList(outLayer->image); + return(MagickFalse); + } /* clear the image based on the layer opacity */ outLayer->image->background_color.alpha= ScaleCharToQuantum((unsigned char) outLayer->alpha); @@ -1338,7 +1348,8 @@ static Image *ReadXCFImage(const ImageInfo *image_info,ExceptionInfo *exception) ssize_t j; for (j=0; j <= current_layer; j++) - layer_info[j].image=DestroyImage(layer_info[j].image); + if (layer_info[j].image != (Image *) NULL) + layer_info[j].image=DestroyImage(layer_info[j].image); layer_info=(XCFLayerInfo *) RelinquishMagickMemory(layer_info); ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); }