]> granicus.if.org Git - imagemagick/commitdiff
Fix more leaks based on changes in #763
authorDirk Lemstra <dirk@git.imagemagick.org>
Sat, 16 Sep 2017 13:44:04 +0000 (15:44 +0200)
committerDirk Lemstra <dirk@git.imagemagick.org>
Sat, 16 Sep 2017 13:44:04 +0000 (15:44 +0200)
coders/cut.c
coders/dps.c
coders/gif.c

index 6ae02e81ecf0c959e4577defeabecd619b5fbce7..ac5b6a4c1bba84ed6a7b0ecc7a626b99e2fd5896 100644 (file)
@@ -509,6 +509,10 @@ static Image *ReadCUTImage(const ImageInfo *image_info,ExceptionInfo *exception)
   offset=SeekBlob(image,6 /*sizeof(Header)*/,SEEK_SET);
   if (offset < 0)
     {
+      if (palette != NULL)
+        palette=DestroyImage(palette);
+      if (clone_info != NULL)
+        clone_info=DestroyImageInfo(clone_info);
       BImgBuff=(unsigned char *) RelinquishMagickMemory(BImgBuff);
       ThrowReaderException(CorruptImageError,"ImproperImageHeader");
     }
index e4430beb32cd57b108a8df47c507f5941f87b59e..e110c3b60bec58df8904d121c870887ffdf8ba30 100644 (file)
@@ -316,12 +316,18 @@ static Image *ReadDPSImage(const ImageInfo *image_info,ExceptionInfo *exception)
     {
       (void) CloseBlob(image);
       colors=(XColor *) RelinquishMagickMemory(colors);
+      XDestroyImage(dps_image);
+      XFreeResources(display,visual_info,map_info,(XPixelInfo *) NULL,
+        (XFontStruct *) NULL,&resource_info,(XWindowInfo *) NULL);
       return(GetFirstImageInList(image));
     }
   status=SetImageExtent(image,image->columns,image->rows,exception);
   if (status == MagickFalse)
     {
       colors=(XColor *) RelinquishMagickMemory(colors);
+      XDestroyImage(dps_image);
+      XFreeResources(display,visual_info,map_info,(XPixelInfo *) NULL,
+        (XFontStruct *) NULL,&resource_info,(XWindowInfo *) NULL);
       return(DestroyImageList(image));
     }
   switch (image->storage_class)
index d87279f5fb020d44985227be2a388b2920e9ad0a..9ea4c426e13e0710f758f75ed1a4fd35b543e7e3 100644 (file)
@@ -1186,6 +1186,7 @@ static Image *ReadGIFImage(const ImageInfo *image_info,ExceptionInfo *exception)
                   {
                     meta_image=DestroyImage(meta_image);
                     global_colormap=(unsigned char *) RelinquishMagickMemory(global_colormap);
+                    info=(unsigned char *) RelinquishMagickMemory(info);
                     ThrowReaderException(ResourceLimitError,
                       "MemoryAllocationFailed");
                   }