mpeg12: check for available bits to avoid an infinite loop
authorJindřich Makovička <makovick@gmail.com>
Wed, 18 Jan 2012 21:07:22 +0000 (22:07 +0100)
committerDiego Biurrun <diego@biurrun.de>
Thu, 19 Jan 2012 13:14:21 +0000 (14:14 +0100)
Signed-off-by: Jindrich Makovicka <makovick@gmail.com>
Signed-off-by: Diego Biurrun <diego@biurrun.de>
libavcodec/mpeg12.c

index 34857d6..d79cf70 100644 (file)
@@ -1658,7 +1658,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y,
     if (mb_y == 0 && s->codec_tag == AV_RL32("SLIF")) {
         skip_bits1(&s->gb);
     } else {
-        for (;;) {
+        while (get_bits_left(&s->gb) > 0) {
             int code = get_vlc2(&s->gb, mbincr_vlc.table, MBINCR_VLC_BITS, 2);
             if (code < 0) {
                 av_log(s->avctx, AV_LOG_ERROR, "first mb_incr damaged\n");