From b65c9f3069191cbc2a0a75ce381d38e867a2b339 Mon Sep 17 00:00:00 2001 From: "jiyong.min" Date: Mon, 7 Sep 2020 10:16:56 +0900 Subject: [PATCH] Enhance error handling for save functions in webp - Add to check invalid parameters - Add to check frame_count for no animation Change-Id: Idc5875c9d8c3f3336f997a63746a35d7429d25a1 --- webp/mm_util_webp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/webp/mm_util_webp.c b/webp/mm_util_webp.c index b898e35..88cbec5 100644 --- a/webp/mm_util_webp.c +++ b/webp/mm_util_webp.c @@ -28,6 +28,7 @@ typedef struct { WebPMuxAnimParams anim_params; bool lossless; unsigned int timestamp; + unsigned int frame_count; } mm_util_webp_anim_enc_t; @@ -54,6 +55,8 @@ static void __webp_anim_enc_deinit(mm_util_webp_anim_enc_t *anim_enc) return; WebPAnimEncoderDelete(anim_enc->enc); + anim_enc->frame_count = 0; + anim_enc->timestamp = 0; anim_enc->enc = NULL; } @@ -258,6 +261,7 @@ int mm_util_webp_anim_enc_add_image(mm_util_webp_anim_enc_h anim_enc_h, mm_util_ } else { // convert the delay between frames to timestamp of each frame anim_enc->timestamp += frame->delay_time; + anim_enc->frame_count++; } WebPPictureFree(&picture); @@ -275,6 +279,7 @@ int mm_util_webp_anim_enc_save_to_file(mm_util_webp_anim_enc_h anim_enc_h, const GError *g_error = NULL; mm_util_retvm_if(!anim_enc_h, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid anim_enc_h"); + mm_util_retvm_if(anim_enc->frame_count == 0, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid frame_count"); WebPDataInit(&webp_data); @@ -304,6 +309,9 @@ int mm_util_webp_anim_enc_save_to_buffer(mm_util_webp_anim_enc_h anim_enc_h, voi WebPData webp_data; mm_util_retvm_if(!anim_enc_h, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid anim_enc_h"); + mm_util_retvm_if(!buf, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid buf"); + mm_util_retvm_if(!buf_size, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid buf_size"); + mm_util_retvm_if(anim_enc->frame_count == 0, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid frame_count"); WebPDataInit(&webp_data); -- 2.7.4