indeo3: Check remaining bits in parse_bintree()
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 25 Nov 2011 16:47:17 +0000 (17:47 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 25 Nov 2011 16:55:23 +0000 (17:55 +0100)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/indeo3.c

index 22984db..b20c3fc 100644 (file)
@@ -736,7 +736,7 @@ static int parse_bintree(Indeo3DecodeContext *ctx, AVCodecContext *avctx,
         ref_cell->width -= curr_cell.width;
     }
 
-    while (1) { /* loop until return */
+    while (get_bits_left(&ctx->gb) >= 2) { /* loop until return */
         RESYNC_BITSTREAM;
         switch (code = get_bits(&ctx->gb, 2)) {
         case H_SPLIT:
@@ -789,7 +789,7 @@ static int parse_bintree(Indeo3DecodeContext *ctx, AVCodecContext *avctx,
         }
     }//while
 
-    return 0;
+    return AVERROR_INVALIDDATA;
 }