From 810159a0da93f3dfeabe6c827bc68d3cb97ac681 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 12 Jul 2024 22:16:13 +0200 Subject: [PATCH] avfilter/af_surround: Check output format Fixes: CID1516994 Out-of-bounds access Fixes: CID1516996 Out-of-bounds access Fixes: CID1516999 Out-of-bounds access Sponsored-by: Sovereign Tech Fund Signed-off-by: Michael Niedermayer (cherry picked from commit 22ee55a1da8218fb00c536723d488b7ca9344bd3) Signed-off-by: Michael Niedermayer --- libavfilter/af_surround.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/libavfilter/af_surround.c b/libavfilter/af_surround.c index 858fed609a..a6923f41c7 100644 --- a/libavfilter/af_surround.c +++ b/libavfilter/af_surround.c @@ -1407,6 +1407,31 @@ static av_cold int init(AVFilterContext *ctx) out_channel_layout = s->out_channel_layout.order == AV_CHANNEL_ORDER_NATIVE ? s->out_channel_layout.u.mask : 0; + switch (out_channel_layout) { + case AV_CH_LAYOUT_MONO: + case AV_CH_LAYOUT_STEREO: + case AV_CH_LAYOUT_2POINT1: + case AV_CH_LAYOUT_2_1: + case AV_CH_LAYOUT_2_2: + case AV_CH_LAYOUT_SURROUND: + case AV_CH_LAYOUT_3POINT1: + case AV_CH_LAYOUT_QUAD: + case AV_CH_LAYOUT_4POINT0: + case AV_CH_LAYOUT_4POINT1: + case AV_CH_LAYOUT_5POINT0: + case AV_CH_LAYOUT_5POINT1: + case AV_CH_LAYOUT_5POINT0_BACK: + case AV_CH_LAYOUT_5POINT1_BACK: + case AV_CH_LAYOUT_6POINT0: + case AV_CH_LAYOUT_6POINT1: + case AV_CH_LAYOUT_7POINT0: + case AV_CH_LAYOUT_7POINT1: + case AV_CH_LAYOUT_OCTAGONAL: + break; + default: + goto fail; + } + switch (in_channel_layout) { case AV_CH_LAYOUT_STEREO: s->filter = filter_stereo;