dca: Validate the channel map
authorLuca Barbato <lu_zero@gentoo.org>
Tue, 14 Mar 2017 09:15:29 +0000 (09:15 +0000)
committerLuca Barbato <lu_zero@gentoo.org>
Tue, 21 Mar 2017 11:08:49 +0000 (12:08 +0100)
Having a mismatch between the number of channels in the stream and those
in the channel map will lead to a segfault or worse.

Bug-Id: 1016

CC: libav-stable@libav.org
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
libavcodec/dcadec.c

index cd44323..af26dce 100644 (file)
@@ -1297,6 +1297,9 @@ static int set_channel_layout(AVCodecContext *avctx, int channels, int num_core_
                 s->channel_order_tab = ff_dca_channel_reorder_nolfe[s->amode];
         }
 
+        if (channels < ff_dca_channels[s->amode])
+            return AVERROR_INVALIDDATA;
+
         if (channels > !!s->lfe &&
             s->channel_order_tab[channels - 1 - !!s->lfe] < 0)
             return AVERROR_INVALIDDATA;