From 1ec41ef6a67842efb946366dc86f1106e1e9b3c9 Mon Sep 17 00:00:00 2001 From: "jiyong.min" Date: Thu, 27 Dec 2018 08:52:49 +0900 Subject: [PATCH] Fix coverity issue - Resource leak - Dereference before null check - Large stack use Change-Id: Ib7713f0fd1ae54ac0a6e140794afedd07a4cc1c2 --- gif/mm_util_gif.c | 58 +++++++++++++++++++++++++++++++--------- gif/test/mm_util_gif_testsuite.c | 2 +- packaging/libmm-utility.spec | 2 +- 3 files changed, 47 insertions(+), 15 deletions(-) diff --git a/gif/mm_util_gif.c b/gif/mm_util_gif.c index b70534e..702b6b1 100644 --- a/gif/mm_util_gif.c +++ b/gif/mm_util_gif.c @@ -546,7 +546,6 @@ int _gif_image_write_ext_block(gif_file_s *gif_file, unsigned int delay_time) ret = _gif_image_create_ext_block(GRAPHICS_EXT_FUNC_CODE, GRAPHIC_EXT_BLOCK_SIZE, &_ext_block); mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "_gif_image_alloc_ext_block failed"); - mm_util_retvm_if(_ext_block->Bytes == NULL, MM_UTIL_ERROR_OUT_OF_MEMORY, "_gif_image_alloc_ext_block failed"); /* use fixed graphics control */ graphic_control_block.DisposalMode = MM_UTIL_GIF_DISPOSAL_UNSPECIFIED; @@ -562,10 +561,8 @@ int _gif_image_write_ext_block(gif_file_s *gif_file, unsigned int delay_time) } /* release extension blocks */ - if (_ext_block != NULL) { - MMUTIL_SAFE_FREE(_ext_block->Bytes); - MMUTIL_SAFE_FREE(_ext_block); - } + MMUTIL_SAFE_FREE(_ext_block->Bytes); + MMUTIL_SAFE_FREE(_ext_block); return MM_UTIL_ERROR_NONE; } @@ -726,18 +723,34 @@ int mm_util_encode_to_gif_file(mm_image_info_s **images, const unsigned int imag mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_create failed %d", ret); ret = mm_util_gif_encode_set_file(gif_file_h, path); - mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_set_file failed %d", ret); + if (ret != MM_UTIL_ERROR_NONE) { + mm_util_error("mm_util_gif_encode_set_file failed"); + mm_util_gif_encode_destroy(gif_file_h); + return ret; + } ret = _mm_util_gif_encode_start(gif_file_h, images[0]->width, images[0]->height); - mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "_mm_util_gif_encode_start failed"); + if (ret != MM_UTIL_ERROR_NONE) { + mm_util_error("_mm_util_gif_encode_start failed"); + mm_util_gif_encode_destroy(gif_file_h); + return ret; + } for (i = 0; i < image_count; i++) { ret = mm_util_gif_encode_add_image(gif_file_h, images[i]); - mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_add_image failed"); + if (ret != MM_UTIL_ERROR_NONE) { + mm_util_error("mm_util_gif_encode_add_image failed"); + mm_util_gif_encode_destroy(gif_file_h); + return ret; + } } ret = mm_util_gif_encode_save(gif_file_h); - mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_save failed"); + if (ret != MM_UTIL_ERROR_NONE) { + mm_util_error("mm_util_gif_encode_save failed"); + mm_util_gif_encode_destroy(gif_file_h); + return ret; + } mm_util_fleave(); @@ -760,18 +773,36 @@ int mm_util_encode_to_gif_memory(mm_image_info_s **images, const unsigned int im mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_create failed %d", ret); ret = mm_util_gif_encode_set_mem(gif_file_h, buffer, size); - mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_set_mem failed %d", ret); + if (ret != MM_UTIL_ERROR_NONE) { + mm_util_error("mm_util_gif_encode_set_mem failed"); + mm_util_gif_encode_destroy(gif_file_h); + return ret; + } ret = _mm_util_gif_encode_start(gif_file_h, images[0]->width, images[0]->height); - mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "_mm_util_gif_encode_start failed"); + if (ret != MM_UTIL_ERROR_NONE) { + mm_util_error("_mm_util_gif_encode_start failed"); + mm_util_gif_encode_destroy(gif_file_h); + return ret; + } for (i = 0; i < image_count; i++) { ret = mm_util_gif_encode_add_image(gif_file_h, images[i]); - mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_add_image failed"); + if (ret != MM_UTIL_ERROR_NONE) { + mm_util_error("mm_util_gif_encode_add_image failed"); + mm_util_gif_encode_destroy(gif_file_h); + return ret; + } } ret = mm_util_gif_encode_save(gif_file_h); - mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_save failed"); + if (ret != MM_UTIL_ERROR_NONE) { + mm_util_error("mm_util_gif_encode_save failed"); + mm_util_gif_encode_destroy(gif_file_h); + return ret; + } + + mm_util_gif_encode_destroy(gif_file_h); mm_util_fleave(); @@ -792,4 +823,5 @@ void mm_util_gif_encode_destroy(mm_gif_file_h gif_file_h) MMUTIL_SAFE_G_FREE(gif_file->filename); MMUTIL_SAFE_FREE(gif_file->write_data_ptr.mem); + MMUTIL_SAFE_FREE(gif_file); } diff --git a/gif/test/mm_util_gif_testsuite.c b/gif/test/mm_util_gif_testsuite.c index ea3191c..d23b4c1 100644 --- a/gif/test/mm_util_gif_testsuite.c +++ b/gif/test/mm_util_gif_testsuite.c @@ -28,7 +28,7 @@ #include #define ENCODE_RESULT_PATH tzplatform_mkpath(TZ_USER_CONTENT, "encode_test.gif") -#define ANIMATED_FRAME_MAX 100 +#define ANIMATED_FRAME_MAX 2 /* change the max frames for animated gif before using it */ static gboolean g_encode_mem = FALSE; diff --git a/packaging/libmm-utility.spec b/packaging/libmm-utility.spec index 5c5ebee..7c878a0 100755 --- a/packaging/libmm-utility.spec +++ b/packaging/libmm-utility.spec @@ -1,6 +1,6 @@ Name: libmm-utility Summary: Multimedia Framework Utility Library -Version: 0.1.29 +Version: 0.1.30 Release: 0 Group: System/Libraries License: Apache-2.0 -- 2.7.4