[FFmpeg-devel] [PATCH 08/11] avformat/dashenc: Fix leak of AVFormatContext on error
Jeyapal, Karthick
kjeyapal at akamai.com
Tue Jan 7 18:03:15 EET 2020
On 1/7/20 7:25 PM, Andreas Rheinhardt wrote:
> The Dash muxer uses submuxers and when one such submuxer has been allocated,
> it is initially only stored in a temporary variable. Therefore it leaks
> if an error happens between the allocation and storing it permanently.
> This commit changes this.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
> libavformat/dashenc.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
> index b84736881f..dab7010179 100644
> --- a/libavformat/dashenc.c
> +++ b/libavformat/dashenc.c
> @@ -1225,10 +1225,6 @@ static int dash_init(AVFormatContext *s)
> dict_copy_entry(&as->metadata, s->streams[i]->metadata, "language");
> dict_copy_entry(&as->metadata, s->streams[i]->metadata, "role");
>
> - ctx = avformat_alloc_context();
> - if (!ctx)
> - return AVERROR(ENOMEM);
> -
> if (c->init_seg_name) {
> os->init_seg_name = av_strireplace(c->init_seg_name, "$ext$", os->extension_name);
> if (!os->init_seg_name)
> @@ -1261,10 +1257,13 @@ static int dash_init(AVFormatContext *s)
> }
> }
>
> + os->ctx = ctx = avformat_alloc_context();
> + if (!ctx)
> + return AVERROR(ENOMEM);
> +
> ctx->oformat = av_guess_format(os->format_name, NULL, NULL);
> if (!ctx->oformat)
> return AVERROR_MUXER_NOT_FOUND;
> - os->ctx = ctx;
> ctx->interrupt_callback = s->interrupt_callback;
> ctx->opaque = s->opaque;
> ctx->io_close = s->io_close;
LGTM
Regards,
Karthick
More information about the ffmpeg-devel
mailing list