Fix memory leak on failure 90/233490/2
authorMinje Ahn <minje.ahn@samsung.com>
Fri, 15 May 2020 04:53:00 +0000 (13:53 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Thu, 28 May 2020 23:33:17 +0000 (08:33 +0900)
Change-Id: I0812a2d3c5ba4fa09e90bd5b5bdb0d5e3feb6284
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
formats/ffmpeg/mm_file_format_frame.c

index 86917b4f9e75cdf09e4991b3f5fd265738ea631b..68cef9c215c80045b1a981787672034df5f3a1e0 100755 (executable)
@@ -261,6 +261,7 @@ static bool __mmfile_open_video_codec(AVFormatContext *pFormatCtx, int videoStre
 
        if (avcodec_parameters_to_context(pVideoCodecCtx, pVideoCodecPar) < 0) {
                debug_error(DEBUG, "error: avcodec_parameters_to_context");
+               avcodec_free_context(&pVideoCodecCtx);
                return false;
        }
 
@@ -269,6 +270,7 @@ static bool __mmfile_open_video_codec(AVFormatContext *pFormatCtx, int videoStre
        pVideoCodecCtx->thread_count = 0;
        if (avcodec_open2(pVideoCodecCtx, pVideoCodec, NULL) < 0) {
                debug_error(DEBUG, "error : avcodec_open failed");
+               avcodec_free_context(&pVideoCodecCtx);
                return false;
        }
 
@@ -569,8 +571,8 @@ int mmfile_format_get_frame_from_memory(const void *data, unsigned int datasize,
        }
 
        pIOCtx = avio_alloc_context(avio_ctx_buffer, MMFILE_AVIO_BUFFER_LEN, 0, handle, __mmf_mem_read, NULL, __mmf_mem_seek);
-       if (pIOCtx == NULL) {
-               debug_error(DEBUG, "error: cannot alloc io context");
+       if (!pIOCtx) {
+               debug_error(DEBUG, "failed to avio_alloc_context");
                av_free(avio_ctx_buffer);
                mmfile_free(handle);
                ret = MMFILE_FORMAT_FAIL;
@@ -579,7 +581,7 @@ int mmfile_format_get_frame_from_memory(const void *data, unsigned int datasize,
 
        pFormatCtx = avformat_alloc_context();
        if (!pFormatCtx) {
-               debug_warning(DEBUG, "failed to avformat_alloc_context");
+               debug_error(DEBUG, "failed to avformat_alloc_context");
                ret = MMFILE_FORMAT_FAIL;
                goto exception;
        }