]> granicus.if.org Git - imagemagick/commitdiff
fix multiple null pointer
authorroot <356986351@qq.com>
Fri, 29 Sep 2017 05:08:02 +0000 (05:08 +0000)
committerDirk Lemstra <dlemstra@users.noreply.github.com>
Fri, 29 Sep 2017 08:50:00 +0000 (10:50 +0200)
MagickCore/stream.c
coders/psd.c
coders/raw.c
coders/xcf.c

index 7415e0d68c5f4ed5f7d513f59c2fd530ddb3fdb7..fc5add9b8e53f0fb5568cf94efa50e7845a61d24 100644 (file)
@@ -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);
index a7f09b23b08bf470b0c2b94efbbf8cf850a8ae86..dcdf22a1afaeb3aa15376a61f169bba2aa1a3bff 100644 (file)
@@ -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;
index 43cafa88d9749b4e5ee4109a5ee6dbe8e0524703..78a638fd5a23627dc530448b28e59d30127f4908 100644 (file)
@@ -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;
index 8f7a67e1f0ac1072e7219639e23406f609dcce5f..8e09deca5d07b24217419ffcac140f5732847b1a 100644 (file)
@@ -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)