From ca8e5dedc7fabae3df76ea11d9952070cbb19620 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Mon, 24 Aug 2020 22:21:51 +0200 Subject: [PATCH] avfilter/af_headphone: Fix leak of channel layouts list on error In case the multichannel HRIR mode was enabled, an error could happen between allocating a channel layouts list and attaching it to its target destination. If an error happened, the list would leak. This is fixed by attaching the list to its target directly after its allocation. Reviewed-by: Paul B Mahol Signed-off-by: Andreas Rheinhardt --- libavfilter/af_headphone.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libavfilter/af_headphone.c b/libavfilter/af_headphone.c index 751f4ab53d..da5acdce30 100644 --- a/libavfilter/af_headphone.c +++ b/libavfilter/af_headphone.c @@ -703,6 +703,9 @@ static int query_formats(AVFilterContext *ctx) return ret; ret = ff_add_channel_layout(&stereo_layout, AV_CH_LAYOUT_STEREO); + if (ret) + return ret; + ret = ff_channel_layouts_ref(stereo_layout, &ctx->outputs[0]->in_channel_layouts); if (ret) return ret; @@ -721,10 +724,6 @@ static int query_formats(AVFilterContext *ctx) } } - ret = ff_channel_layouts_ref(stereo_layout, &ctx->outputs[0]->in_channel_layouts); - if (ret) - return ret; - formats = ff_all_samplerates(); if (!formats) return AVERROR(ENOMEM);