alac: Reject rice_limit 0 if compression is used
authorAndreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Thu, 23 Apr 2015 22:01:43 +0000 (00:01 +0200)
committerLuca Barbato <lu_zero@gentoo.org>
Fri, 8 May 2015 09:10:51 +0000 (11:10 +0200)
If in compression mode rice_limit = 0 leads to call
`show_bits(gb, k)` in `decode_scalar` with k = 0.

Request a sample in case it is valid and it should be accepted.

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

index 48903a6..9579e18 100644 (file)
@@ -307,6 +307,12 @@ static int decode_element(AVCodecContext *avctx, AVFrame *frame, int ch_index,
         int lpc_quant[2];
         int rice_history_mult[2];
 
+        if (!alac->rice_limit) {
+            avpriv_request_sample(alac->avctx,
+                                  "Compression with rice limit 0");
+            return AVERROR(ENOSYS);
+        }
+
         decorr_shift       = get_bits(&alac->gb, 8);
         decorr_left_weight = get_bits(&alac->gb, 8);