From 1a7e6d19bef1075d1c2b3fb704cf7ae0394761c8 Mon Sep 17 00:00:00 2001 From: root <356986351@qq.com> Date: Fri, 29 Sep 2017 05:08:02 +0000 Subject: [PATCH] fix multiple null pointer --- MagickCore/stream.c | 7 +++++++ coders/psd.c | 5 +++++ coders/raw.c | 2 ++ coders/xcf.c | 3 +++ 4 files changed, 17 insertions(+) diff --git a/MagickCore/stream.c b/MagickCore/stream.c index 7415e0d68..fc5add9b8 100644 --- a/MagickCore/stream.c +++ b/MagickCore/stream.c @@ -1290,8 +1290,15 @@ MagickExport Image *StreamImage(const ImageInfo *image_info, assert(stream_info->signature == MagickCoreSignature); assert(exception != (ExceptionInfo *) NULL); read_info=CloneImageInfo(image_info); + if (read_info == (ImageInfo *) NULL) + return (Image *) NULL; stream_info->image_info=image_info; stream_info->quantum_info=AcquireQuantumInfo(image_info,(Image *) NULL); + if (stream_info->quantum_info == (QuantumInfo *) NULL) + { + read_info=DestroyImageInfo(read_info); + return (Image *) NULL; + } stream_info->exception=exception; read_info->client_data=(void *) stream_info; image=ReadStream(read_info,&WriteStreamImage,exception); diff --git a/coders/psd.c b/coders/psd.c index a7f09b23b..dcdf22a1a 100644 --- a/coders/psd.c +++ b/coders/psd.c @@ -452,6 +452,11 @@ static MagickBooleanType ApplyPSDOpacityMask(Image *image,const Image *mask, " applying opacity mask"); complete_mask=CloneImage(image,image->columns,image->rows,MagickTrue, exception); + if (complete_mask == (Image *) NULL) + { + status=MagickFalse; + return(status); + } complete_mask->alpha_trait=BlendPixelTrait; GetPixelInfo(complete_mask,&color); color.red=background; diff --git a/coders/raw.c b/coders/raw.c index 43cafa88d..78a638fd5 100644 --- a/coders/raw.c +++ b/coders/raw.c @@ -152,6 +152,8 @@ static Image *ReadRAWImage(const ImageInfo *image_info,ExceptionInfo *exception) */ canvas_image=CloneImage(image,image->extract_info.width,1,MagickFalse, exception); + if (canvas_image == (Image *) NULL) + ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); (void) SetImageVirtualPixelMethod(canvas_image,BlackVirtualPixelMethod, exception); quantum_type=GrayQuantum; diff --git a/coders/xcf.c b/coders/xcf.c index 8f7a67e1f..8e09deca5 100644 --- a/coders/xcf.c +++ b/coders/xcf.c @@ -666,6 +666,9 @@ static MagickBooleanType load_level(Image *image,XCFDocInfo *inDocInfo, tile_image_height=TILE_HEIGHT; tile_image=CloneImage(inLayerInfo->image,tile_image_width, tile_image_height,MagickTrue,exception); + if (tile_image == (Image *) NULL) + ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", + image->filename); /* read in the tile */ switch (inDocInfo->compression) -- 2.40.0