From 814daac5bae1e7e3a67cd7ed727bd1fe6b9a3889 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 18 Jan 2010 11:05:15 +0100 Subject: [PATCH] decoder/ffmpeg: free AVFormatContext on error Fix a memory leak in some code paths. --- NEWS | 1 + src/decoder/ffmpeg_plugin.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/NEWS b/NEWS index 1a8cf2364..d0b8788a7 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ ver 0.15.11 (2010/??/??) * decoders: - mp4ff: support tags "album artist", "albumartist", "band" - mikmod: fix memory leak + - ffmpeg: free AVFormatContext on error * playlist: emit IDLE_OPTIONS when resetting single mode * listen: make get_remote_uid() work on BSD diff --git a/src/decoder/ffmpeg_plugin.c b/src/decoder/ffmpeg_plugin.c index 2a46601f4..2e06c13f8 100644 --- a/src/decoder/ffmpeg_plugin.c +++ b/src/decoder/ffmpeg_plugin.c @@ -192,12 +192,14 @@ ffmpeg_helper(const char *uri, struct input_stream *input, if (av_find_stream_info(format_context)<0) { g_warning("Couldn't find stream info\n"); + av_close_input_file(format_context); return false; } audio_stream = ffmpeg_find_audio_stream(format_context); if (audio_stream == -1) { g_warning("No audio stream inside\n"); + av_close_input_file(format_context); return false; } @@ -209,11 +211,13 @@ ffmpeg_helper(const char *uri, struct input_stream *input, if (!codec) { g_warning("Unsupported audio codec\n"); + av_close_input_file(format_context); return false; } if (avcodec_open(codec_context, codec)<0) { g_warning("Could not open codec\n"); + av_close_input_file(format_context); return false; }