aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-02-19 21:50:18 +0100
committerMichael Niedermayer <michaelni@gmx.at>2012-02-19 22:08:21 +0100
commitf4f386dd00e594dc90eb32ae872ae8e22b08d179 (patch)
tree3a4006de422b1650032fec4c29a71a3baad95d34
parent886b40b94aedf3502f65bf4dec227669bf9a95f0 (diff)
downloadffmpeg-f4f386dd00e594dc90eb32ae872ae8e22b08d179.tar.gz
wmalossless: Fix infinite loop.
Fixes more of Ticket1000 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/wmalosslessdec.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavcodec/wmalosslessdec.c b/libavcodec/wmalosslessdec.c
index 79cd5f48eb..b32731f96e 100644
--- a/libavcodec/wmalosslessdec.c
+++ b/libavcodec/wmalosslessdec.c
@@ -713,8 +713,11 @@ static int decode_channel_residues(WmallDecodeCtx *s, int ch, int tile_size)
//av_log(0, 0, "%8d: ", num_logged_tiles++);
for(; i < tile_size; i++) {
int quo = 0, rem, rem_bits, residue;
- while(get_bits1(&s->gb))
+ while(get_bits1(&s->gb)) {
quo++;
+ if (get_bits_left(&s->gb) <= 0)
+ return -1;
+ }
if(quo >= 32)
quo += get_bits_long(&s->gb, get_bits(&s->gb, 5) + 1);