diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-05-02 17:24:02 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-05-02 17:24:02 +0200 |
commit | 60ab4480423769ac3db487aba5232b187036c7ea (patch) | |
tree | 03b76e2f0dc205c8e486da622999241c4f4e2076 /libavcodec | |
parent | 8937230719ad7039ff908793f3bb2111e26e4edc (diff) | |
download | ffmpeg-60ab4480423769ac3db487aba5232b187036c7ea.tar.gz |
ape_decode_value_3860: check k before using it in get_bits()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/apedec.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c index be6edd2f46..1f55dab851 100644 --- a/libavcodec/apedec.c +++ b/libavcodec/apedec.c @@ -489,9 +489,12 @@ static inline int ape_decode_value_3860(APEContext *ctx, GetBitContext *gb, if (!rice->k) x = overflow; - else + else if(rice->k <= MIN_CACHE_BITS) { x = (overflow << rice->k) + get_bits(gb, rice->k); - + } else { + av_log(ctx->avctx, AV_LOG_ERROR, "Too many bits: %d\n", rice->k); + return AVERROR_INVALIDDATA; + } rice->ksum += x - (rice->ksum + 8 >> 4); if (rice->ksum < (rice->k ? 1 << (rice->k + 4) : 0)) rice->k--; |