]> granicus.if.org Git - imagemagick/commitdiff
Fixed invalid free.
authorDirk Lemstra <dirk@lemstra.org>
Sat, 29 Jun 2019 11:23:09 +0000 (13:23 +0200)
committerDirk Lemstra <dirk@lemstra.org>
Sat, 29 Jun 2019 11:23:09 +0000 (13:23 +0200)
coders/heic.c

index ed59192e8492b05ad548c577adb4ec03a3326b18..10d60c4772c10e015c111d15a2a4c707f4a23cc9 100644 (file)
@@ -340,6 +340,11 @@ static MagickBooleanType ReadHEICImageByID(const ImageInfo *image_info,
     (void) SetImageProperty(image,"exif:Orientation","1",exception);
   error=heif_decode_image(image_handle,&heif_image,heif_colorspace_YCbCr,
     heif_chroma_420,decode_options);
+  if (IsHeifSuccess(&error,image,exception) == MagickFalse)
+    {
+      heif_image_handle_release(image_handle);
+      return(MagickFalse);
+    }
   if (decode_options != (struct heif_decoding_options *) NULL)
     {
       /*
@@ -349,13 +354,12 @@ static MagickBooleanType ReadHEICImageByID(const ImageInfo *image_info,
       image->rows=(size_t) heif_image_get_height(heif_image,heif_channel_Y);
       status=SetImageExtent(image,image->columns,image->rows,exception);
       heif_decoding_options_free(decode_options);
-    }
-  if ((IsHeifSuccess(&error,image,exception) == MagickFalse) ||
-      (status == MagickFalse))
-    {
-      heif_image_release(heif_image);
-      heif_image_handle_release(image_handle);
-      return(MagickFalse);
+      if (status == MagickFalse)
+        {
+          heif_image_release(heif_image);
+          heif_image_handle_release(image_handle);
+          return(MagickFalse);
+        }
     }
   p_y=heif_image_get_plane(heif_image,heif_channel_Y,&stride_y);
   p_cb=heif_image_get_plane(heif_image,heif_channel_Cb,&stride_cb);