Commit 4e06acbd authored by Laurent Aimar's avatar Laurent Aimar

Fixed a segfault in the DCA decoder with corrupted streams.

 It happens when the number of channels defined by DCAContext:acmod is lower
than DCAContext:prim_channels. In this case, dca_subsubframe() will call
qmf_32_subbands() using s->channel_order_tab[] entries equal to -1.

Originally committed as revision 22083 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 4784b092
......@@ -1244,6 +1244,10 @@ static int dca_decode_frame(AVCodecContext * avctx,
} else
s->channel_order_tab = dca_channel_reorder_nolfe[s->amode];
if (s->prim_channels > 0 &&
s->channel_order_tab[s->prim_channels - 1] < 0)
return -1;
if(avctx->request_channels == 2 && s->prim_channels > 2) {
channels = 2;
s->output = DCA_STEREO;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment