From e75eeac23646a6d29daf09023f745bdca8fabbeb Mon Sep 17 00:00:00 2001
From: Umair Khan <omerjerk@gmail.com>
Date: Tue, 14 Nov 2017 12:48:25 +0530
Subject: [PATCH] libavcodec/als: fix for cases having block_length < opt_order

This fixes the bug - https://trac.ffmpeg.org/ticket/5297

Signed-off-by: Umair Khan <omerjerk@gmail.com>
---
 libavcodec/alsdec.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c
index 13bd52f297..ca8701e6d0 100644
--- a/libavcodec/alsdec.c
+++ b/libavcodec/alsdec.c
@@ -704,11 +704,6 @@ static int read_var_block_data(ALSDecContext *ctx, ALSBlockData *bd)
         } else {
             *bd->opt_order = sconf->max_order;
         }
-        if (*bd->opt_order > bd->block_length) {
-            *bd->opt_order = bd->block_length;
-            av_log(avctx, AV_LOG_ERROR, "Predictor order too large.\n");
-            return AVERROR_INVALIDDATA;
-        }
         opt_order = *bd->opt_order;
 
         if (opt_order) {
@@ -925,7 +920,7 @@ static int decode_var_block_data(ALSDecContext *ctx, ALSBlockData *bd)
 
     // reconstruct all samples from residuals
     if (bd->ra_block) {
-        for (smp = 0; smp < opt_order; smp++) {
+        for (smp = 0; smp < FFMIN(opt_order, block_length); smp++) {
             y = 1 << 19;
 
             for (sb = 0; sb < smp; sb++)
-- 
2.14.2

