twinvqdec: Check the ibps parameter separately
authorMartin Storsjö <martin@martin.st>
Tue, 17 Sep 2013 16:33:48 +0000 (19:33 +0300)
committerLuca Barbato <lu_zero@gentoo.org>
Fri, 4 Oct 2013 02:45:24 +0000 (04:45 +0200)
This is required, since invalid parameters actually could
pass the switch check below.

Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
(cherry picked from commit c77d409bf95954aceb762dd800d1ee2868c4b0d4)

libavcodec/twinvq.c

index 8989469..f6c897f 100644 (file)
@@ -1142,6 +1142,10 @@ static av_cold int twin_decode_init(AVCodecContext *avctx)
                                                    AV_CH_LAYOUT_STEREO;
 
     ibps = avctx->bit_rate / (1000 * avctx->channels);
+    if (ibps < 8 || ibps > 48) {
+        av_log(avctx, AV_LOG_ERROR, "Bad bitrate per channel value %d\n", ibps);
+        return AVERROR_INVALIDDATA;
+    }
 
     switch ((isampf << 8) +  ibps) {
     case (8 <<8) +  8: tctx->mtab = &mode_08_08; break;