]> granicus.if.org Git - imagemagick/commitdiff
Fixed memory leaks (https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7612).
authorDirk Lemstra <dirk@git.imagemagick.org>
Thu, 12 Apr 2018 18:49:59 +0000 (20:49 +0200)
committerDirk Lemstra <dirk@git.imagemagick.org>
Thu, 12 Apr 2018 18:50:41 +0000 (20:50 +0200)
coders/jp2.c

index 320ecbed3601d9a9d93b364fb387303fc71aa748..39e2b545f9feb16395d09cc7154d20a7f2866c77 100644 (file)
@@ -1068,17 +1068,19 @@ static MagickBooleanType WriteJP2Image(const ImageInfo *image_info,Image *image,
   opj_set_error_handler(jp2_codec,JP2ErrorHandler,exception);
   opj_setup_encoder(jp2_codec,&parameters,jp2_image);
   jp2_stream=opj_stream_create(OPJ_J2K_STREAM_CHUNK_SIZE,OPJ_FALSE);
+  if (jp2_stream == (opj_stream_t *) NULL)
+    {
+      opj_destroy_codec(jp2_codec);
+      opj_image_destroy(jp2_image);
+      ThrowWriterException(DelegateError,"UnableToEncodeImageFile");
+    }
   opj_stream_set_read_function(jp2_stream,JP2ReadHandler);
   opj_stream_set_write_function(jp2_stream,JP2WriteHandler);
   opj_stream_set_seek_function(jp2_stream,JP2SeekHandler);
   opj_stream_set_skip_function(jp2_stream,JP2SkipHandler);
   opj_stream_set_user_data(jp2_stream,image,NULL);
-  if (jp2_stream == (opj_stream_t *) NULL)
-    ThrowWriterException(DelegateError,"UnableToEncodeImageFile");
   jp2_status=opj_start_compress(jp2_codec,jp2_image,jp2_stream);
-  if (jp2_status == 0)
-    ThrowWriterException(DelegateError,"UnableToEncodeImageFile");
-  if ((opj_encode(jp2_codec,jp2_stream) == 0) ||
+  if ((jp2_status == 0) || (opj_encode(jp2_codec,jp2_stream) == 0) ||
       (opj_end_compress(jp2_codec,jp2_stream) == 0))
     {
       opj_stream_destroy(jp2_stream);