diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2024-07-12 22:16:13 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2024-08-11 13:21:12 +0200 |
commit | 22ee55a1da8218fb00c536723d488b7ca9344bd3 (patch) | |
tree | 7ef610b7d659e6ec2834bfa372c42a2f472d0a68 | |
parent | 43b62b7e0c85c0a1038ac2bc90ae06597e3ef706 (diff) | |
download | ffmpeg-22ee55a1da8218fb00c536723d488b7ca9344bd3.tar.gz |
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 <michael@niedermayer.cc>
-rw-r--r-- | libavfilter/af_surround.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/libavfilter/af_surround.c b/libavfilter/af_surround.c index e37dddc361..d42a23b8ad 100644 --- a/libavfilter/af_surround.c +++ b/libavfilter/af_surround.c @@ -1123,6 +1123,31 @@ static av_cold int init(AVFilterContext *ctx) s->create_lfe = av_channel_layout_index_from_channel(&s->out_ch_layout, AV_CHAN_LOW_FREQUENCY) >= 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; |