]> granicus.if.org Git - imagemagick/commitdiff
Fixed memory leak (https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7253).
authorDirk Lemstra <dirk@git.imagemagick.org>
Sun, 1 Apr 2018 13:43:44 +0000 (15:43 +0200)
committerDirk Lemstra <dirk@git.imagemagick.org>
Sun, 1 Apr 2018 13:43:44 +0000 (15:43 +0200)
coders/jpeg.c

index 18545e418f1a65bfa41526bfa52e5c5dc3e9295d..8d97f5e5fe0a4d41644d176ae9d8a651678bf120 100644 (file)
@@ -1301,7 +1301,10 @@ static Image *ReadJPEGImage(const ImageInfo *image_info,
   option=GetImageOption(image_info,"jpeg:colors");
   if (option != (const char *) NULL)
     if (AcquireImageColormap(image,StringToUnsignedLong(option),exception) == MagickFalse)
-      ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
+      {
+        jpeg_destroy_decompress(&jpeg_info);
+        ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
+      }
   if ((jpeg_info.output_components == 1) && (jpeg_info.quantize_colors == 0))
     {
       size_t
@@ -1309,7 +1312,10 @@ static Image *ReadJPEGImage(const ImageInfo *image_info,
 
       colors=(size_t) GetQuantumRange(image->depth)+1;
       if (AcquireImageColormap(image,colors,exception) == MagickFalse)
-        ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
+        {
+          jpeg_destroy_decompress(&jpeg_info);
+          ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
+        }
     }
   if (image->debug != MagickFalse)
     {