]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[mod_av] dont leak avformat context in error cases
authorMike Jerris <mike@signalwire.com>
Wed, 10 Jun 2020 17:11:55 +0000 (11:11 -0600)
committerAndrey Volk <andywolk@gmail.com>
Sat, 23 Oct 2021 19:00:16 +0000 (22:00 +0300)
src/mod/applications/mod_av/avformat.c

index 2f80fb0952aed798a25f2b64cc125b3b8d8b9791..94dd545c6f37eeddd5234358d1f4c6f719a48478 100644 (file)
@@ -1157,8 +1157,6 @@ static switch_status_t open_input_file(av_file_context_t *context, switch_file_h
        if ((error = avformat_open_input(&context->fc, filename, NULL, NULL)) < 0) {
                char ebuf[255] = "";
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Could not open input file '%s' (error '%s')\n", filename, get_error_text(error, ebuf, sizeof(ebuf)));
-               avformat_free_context(context->fc);
-               context->fc = NULL;
                switch_goto_status(SWITCH_STATUS_FALSE, err);
        }
        
@@ -1334,6 +1332,11 @@ GCC_DIAG_ON(deprecated-declarations)
        return status;
 
 err:
+       if (context->fc) {
+               avformat_free_context(context->fc);
+               context->fc = NULL;
+       }
+
        /*
        if (context->has_video) close_stream(context->fc, &context->video_st);
        if (context->has_audio) close_stream(context->fc, &context->audio_st);