]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Avoid infinte loop in read_golomb_ue()
authorAndreas Öman <andreas@lonelycoder.com>
Thu, 11 Oct 2012 08:49:11 +0000 (09:49 +0100)
committerAndreas Öman <andreas@lonelycoder.com>
Thu, 11 Oct 2012 08:49:11 +0000 (09:49 +0100)
src/bitstream.c
src/bitstream.h

index 2d426758aa8b8b7060fa0c10f37c25152e11f077..bc3218b6bfee97743038ff3f5fd58b67a828c7ad 100644 (file)
@@ -46,6 +46,13 @@ skip_bits(bitstream_t *bs, int num)
   bs->offset += num;
 }
 
+int
+bs_eof(const bitstream_t *bs)
+{
+  return bs->offset >= bs->len;
+}
+
+
 unsigned int
 read_bits(bitstream_t *bs, int num)
 {
@@ -76,7 +83,7 @@ read_golomb_ue(bitstream_t *bs)
 {
   int b, lzb = -1;
 
-  for(b = 0; !b; lzb++)
+  for(b = 0; !b && !bs_eof(bs); lzb++)
     b = read_bits1(bs);
 
   return (1 << lzb) - 1 + read_bits(bs, lzb);
index 5aa468bf882c58bca9650b023b30e93811a64658..8718e80bb3872cca48613cf36d87a4eaa688138a 100644 (file)
@@ -44,4 +44,6 @@ unsigned int remaining_bits(bitstream_t *gb);
 
 void put_bits(bitstream_t *bs, int val, int num);
 
+int bs_eof(const bitstream_t *bs);
+
 #endif /* BITSTREAM_H_ */