avcodec/indeo5: Fix infinite loop in skip_hdr_extension()
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 15 Jun 2014 01:17:11 +0000 (03:17 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 15 Jun 2014 01:50:30 +0000 (03:50 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/indeo5.c

index a556fc7..75f79ad 100644 (file)
@@ -289,14 +289,18 @@ static int decode_gop_header(IVI45DecContext *ctx, AVCodecContext *avctx)
  *
  *  @param[in,out]  gb  the GetBit context
  */
-static inline void skip_hdr_extension(GetBitContext *gb)
+static inline int skip_hdr_extension(GetBitContext *gb)
 {
     int i, len;
 
     do {
         len = get_bits(gb, 8);
+        if (8*len > get_bits_left(gb))
+            return AVERROR_INVALIDDATA;
         for (i = 0; i < len; i++) skip_bits(gb, 8);
     } while(len);
+
+    return 0;
 }