libavformat/rdt.c:268: error: Integer Overflow L2
  (32 - [0, 63]):unsigned32 by call to `bitstream_read`.

libavformat/rdt.c:265:5: Call
263.      *     http://anonsvn.wireshark.org/viewvc/trunk/epan/dissectors/packet-rdt.c
264.      */
265.     bitstream_init(&bc, buf, len << 3);
         ^
266.     len_included  = bitstream_read_bit(&bc);
267.     need_reliable = bitstream_read_bit(&bc);

libavcodec/bitstream.h:85:9: Assignment
  83.         bc->buffer    =
  84.         bc->ptr       = NULL;
  85.         bc->bits_left = 0;
              ^
  86.         return AVERROR_INVALIDDATA;
  87.     }

libavformat/rdt.c:266:21: Call
264.      */
265.     bitstream_init(&bc, buf, len << 3);
266.     len_included  = bitstream_read_bit(&bc);
                         ^
267.     need_reliable = bitstream_read_bit(&bc);
268.     set_id        = bitstream_read(&bc, 5);

libavcodec/bitstream.h:145:1: Parameter `bc->bits_left`
  143. 
  144. /* Return one bit from the buffer. */
  145. static inline unsigned bitstream_read_bit(BitstreamContext *bc)
       ^
  146. {
  147.     if (!bc->bits_left)

libavcodec/bitstream.h:150:12: Call
  148.         refill_64(bc);
  149. 
  150.     return get_val(bc, 1);
                  ^
  151. }
  152. 

libavcodec/bitstream.h:130:1: Parameter `n`
    128. }
    129. 
    130. static inline uint64_t get_val(BitstreamContext *bc, unsigned n)
         ^
    131. {
    132. #ifdef BITSTREAM_READER_LE

libavcodec/bitstream.h:139:5: Assignment
    137.     bc->bits <<= n;
    138. #endif
    139.     bc->bits_left -= n;
             ^
    140. 
    141.     return ret;

libavformat/rdt.c:267:21: Call
265.     bitstream_init(&bc, buf, len << 3);
266.     len_included  = bitstream_read_bit(&bc);
267.     need_reliable = bitstream_read_bit(&bc);
                         ^
268.     set_id        = bitstream_read(&bc, 5);
269.     bitstream_skip(&bc, 1);

libavcodec/bitstream.h:145:1: Parameter `bc->bits_left`
  143. 
  144. /* Return one bit from the buffer. */
  145. static inline unsigned bitstream_read_bit(BitstreamContext *bc)
       ^
  146. {
  147.     if (!bc->bits_left)

libavcodec/bitstream.h:150:12: Call
  148.         refill_64(bc);
  149. 
  150.     return get_val(bc, 1);
                  ^
  151. }
  152. 

libavcodec/bitstream.h:130:1: Parameter `n`
    128. }
    129. 
    130. static inline uint64_t get_val(BitstreamContext *bc, unsigned n)
         ^
    131. {
    132. #ifdef BITSTREAM_READER_LE

libavcodec/bitstream.h:139:5: Assignment
    137.     bc->bits <<= n;
    138. #endif
    139.     bc->bits_left -= n;
             ^
    140. 
    141.     return ret;

libavformat/rdt.c:268:21: Call
266.     len_included  = bitstream_read_bit(&bc);
267.     need_reliable = bitstream_read_bit(&bc);
268.     set_id        = bitstream_read(&bc, 5);
                         ^
269.     bitstream_skip(&bc, 1);
270.     seq_no        = bitstream_read(&bc, 16);

libavcodec/bitstream.h:183:1: Parameter `n`
  181. 
  182. /* Return n bits from the buffer. n has to be in the 0-32 range. */
  183. static inline uint32_t bitstream_read(BitstreamContext *bc, unsigned n)
       ^
  184. {
  185.     if (!n)

libavcodec/bitstream.h:189:9: Call
  187. 
  188.     if (n > bc->bits_left) {
  189.         refill_32(bc);
               ^
  190.         if (bc->bits_left < 32)
  191.             bc->bits_left = n;

libavcodec/bitstream.h:60:1: <RHS trace>
58. }
59. 
60. static inline void refill_32(BitstreamContext *bc)
    ^
61. {
62.     if (bc->ptr >= bc->buffer_end)

libavcodec/bitstream.h:60:1: Parameter `bc->bits_left`
    58. }
    59. 
    60. static inline void refill_32(BitstreamContext *bc)
        ^
    61. {
    62.     if (bc->ptr >= bc->buffer_end)

libavcodec/bitstream.h:68:5: Binary operation: (32 - [0, 63]):unsigned32 by call to `bitstream_read` 
    66.     bc->bits       = (uint64_t)AV_RL32(bc->ptr) << bc->bits_left | bc->bits;
    67. #else
    68.     bc->bits       = bc->bits | (uint64_t)AV_RB32(bc->ptr) << (32 - bc->bits_left);
            ^
    69. #endif
    70.     bc->ptr       += 4;

static inline void refill_32(BitstreamContext *bc)
{
    if (bc->ptr >= bc->buffer_end)
        return;
#ifdef BITSTREAM_READER_LE
    bc->bits       = (uint64_t)AV_RL32(bc->ptr) << bc->bits_left | bc->bits;
#else
    bc->bits       = bc->bits | (uint64_t)AV_RB32(bc->ptr) << (32 - bc->bits_left);
#endif
    bc->ptr       += 4;
    bc->bits_left += 32;
}
['int\nff_rdt_parse_header(const uint8_t *buf, int len,\n                    int *pset_id, int *pseq_no, int *pstream_id,\n                    int *pis_keyframe, uint32_t *ptimestamp)\n{\n    BitstreamContext bc;\n    int consumed = 0, set_id, seq_no, stream_id, is_keyframe,\n        len_included, need_reliable;\n    uint32_t timestamp;\n    while (len >= 5 && buf[1] == 0xFF  ) {\n        int pkt_len;\n        if (!(buf[0] & 0x80))\n            return -1;\n        pkt_len = AV_RB16(buf+3);\n        buf += pkt_len;\n        len -= pkt_len;\n        consumed += pkt_len;\n    }\n    if (len < 16)\n        return -1;\n    bitstream_init(&bc, buf, len << 3);\n    len_included  = bitstream_read_bit(&bc);\n    need_reliable = bitstream_read_bit(&bc);\n    set_id        = bitstream_read(&bc, 5);\n    bitstream_skip(&bc, 1);\n    seq_no        = bitstream_read(&bc, 16);\n    if (len_included)\n        bitstream_skip(&bc, 16);\n    bitstream_skip(&bc, 2);\n    stream_id     = bitstream_read(&bc, 5);\n    is_keyframe   = !bitstream_read_bit(&bc);\n    timestamp     = bitstream_read(&bc, 32);\n    if (set_id == 0x1f)\n        set_id    = bitstream_read(&bc, 16);\n    if (need_reliable)\n        bitstream_skip(&bc, 16);\n    if (stream_id == 0x1f)\n        stream_id = bitstream_read(&bc, 16);\n    if (pset_id)      *pset_id      = set_id;\n    if (pseq_no)      *pseq_no      = seq_no;\n    if (pstream_id)   *pstream_id   = stream_id;\n    if (pis_keyframe) *pis_keyframe = is_keyframe;\n    if (ptimestamp)   *ptimestamp   = timestamp;\n    return consumed + (bitstream_tell(&bc) >> 3);\n}', 'static inline int bitstream_init(BitstreamContext *bc, const uint8_t *buffer,\n                                 unsigned bit_size)\n{\n    unsigned buffer_size;\n    if (bit_size > INT_MAX - 7 || !buffer) {\n        buffer        =\n        bc->buffer    =\n        bc->ptr       = NULL;\n        bc->bits_left = 0;\n        return AVERROR_INVALIDDATA;\n    }\n    buffer_size = (bit_size + 7) >> 3;\n    bc->buffer       = buffer;\n    bc->buffer_end   = buffer + buffer_size;\n    bc->ptr          = bc->buffer;\n    bc->size_in_bits = bit_size;\n    bc->bits_left    = 0;\n    bc->bits         = 0;\n    refill_64(bc);\n    return 0;\n}', 'static inline unsigned bitstream_read_bit(BitstreamContext *bc)\n{\n    if (!bc->bits_left)\n        refill_64(bc);\n    return get_val(bc, 1);\n}', 'static inline uint64_t get_val(BitstreamContext *bc, unsigned n)\n{\n#ifdef BITSTREAM_READER_LE\n    uint64_t ret = bc->bits & ((UINT64_C(1) << n) - 1);\n    bc->bits >>= n;\n#else\n    uint64_t ret = bc->bits >> (64 - n);\n    bc->bits <<= n;\n#endif\n    bc->bits_left -= n;\n    return ret;\n}', 'static inline uint32_t bitstream_read(BitstreamContext *bc, unsigned n)\n{\n    if (!n)\n        return 0;\n    if (n > bc->bits_left) {\n        refill_32(bc);\n        if (bc->bits_left < 32)\n            bc->bits_left = n;\n    }\n    return get_val(bc, n);\n}', 'static inline void refill_32(BitstreamContext *bc)\n{\n    if (bc->ptr >= bc->buffer_end)\n        return;\n#ifdef BITSTREAM_READER_LE\n    bc->bits       = (uint64_t)AV_RL32(bc->ptr) << bc->bits_left | bc->bits;\n#else\n    bc->bits       = bc->bits | (uint64_t)AV_RB32(bc->ptr) << (32 - bc->bits_left);\n#endif\n    bc->ptr       += 4;\n    bc->bits_left += 32;\n}']