libavcodec/atrac3plusdec.c:347: error: Integer Overflow L2
  ([1, +oo] - 2):unsigned32 by call to `bitstream_read`.

libavcodec/atrac3plusdec.c:347:26: Call
345. 
346.     while (bitstream_bits_left(&ctx->bc) >= 2 &&
347.            (ch_unit_id = bitstream_read(&ctx->bc, 2)) != CH_UNIT_TERMINATOR) {
                              ^
348.         if (ch_unit_id == CH_UNIT_EXTENSION) {
349.             avpriv_report_missing_feature(avctx, "Channel unit extension");

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:194:12: Call
  192.     }
  193. 
  194.     return get_val(bc, n);
                  ^
  195. }
  196. 

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

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

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

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: Binary operation: ([1, +oo] - 2):unsigned32 by call to `bitstream_read` 
    137.     bc->bits <<= n;
    138. #endif
    139.     bc->bits_left -= n;
             ^
    140. 
    141.     return ret;

static inline uint64_t get_val(BitstreamContext *bc, unsigned n)
{
#ifdef BITSTREAM_READER_LE
    uint64_t ret = bc->bits & ((UINT64_C(1) << n) - 1);
    bc->bits >>= n;
#else
    uint64_t ret = bc->bits >> (64 - n);
    bc->bits <<= n;
#endif
    bc->bits_left -= n;
    return ret;
}
['static int atrac3p_decode_frame(AVCodecContext *avctx, void *data,\n                                int *got_frame_ptr, AVPacket *avpkt)\n{\n    ATRAC3PContext *ctx = avctx->priv_data;\n    AVFrame *frame      = data;\n    int i, ret, ch_unit_id, ch_block = 0, out_ch_index = 0, channels_to_process;\n    float **samples_p = (float **)frame->extended_data;\n    frame->nb_samples = ATRAC3P_FRAME_SAMPLES;\n    if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) {\n        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\\n");\n        return ret;\n    }\n    if ((ret = bitstream_init8(&ctx->bc, avpkt->data, avpkt->size)) < 0)\n        return ret;\n    if (bitstream_read_bit(&ctx->bc)) {\n        av_log(avctx, AV_LOG_ERROR, "Invalid start bit!\\n");\n        return AVERROR_INVALIDDATA;\n    }\n    while (bitstream_bits_left(&ctx->bc) >= 2 &&\n           (ch_unit_id = bitstream_read(&ctx->bc, 2)) != CH_UNIT_TERMINATOR) {\n        if (ch_unit_id == CH_UNIT_EXTENSION) {\n            avpriv_report_missing_feature(avctx, "Channel unit extension");\n            return AVERROR_PATCHWELCOME;\n        }\n        if (ch_block >= ctx->num_channel_blocks ||\n            ctx->channel_blocks[ch_block] != ch_unit_id) {\n            av_log(avctx, AV_LOG_ERROR,\n                   "Frame data doesn\'t match channel configuration!\\n");\n            return AVERROR_INVALIDDATA;\n        }\n        ctx->ch_units[ch_block].unit_type = ch_unit_id;\n        channels_to_process               = ch_unit_id + 1;\n        if ((ret = ff_atrac3p_decode_channel_unit(&ctx->bc,\n                                                  &ctx->ch_units[ch_block],\n                                                  channels_to_process,\n                                                  avctx)) < 0)\n            return ret;\n        decode_residual_spectrum(&ctx->ch_units[ch_block], ctx->samples,\n                                 channels_to_process, avctx);\n        reconstruct_frame(ctx, &ctx->ch_units[ch_block],\n                          channels_to_process, avctx);\n        for (i = 0; i < channels_to_process; i++)\n            memcpy(samples_p[out_ch_index + i], ctx->outp_buf[i],\n                   ATRAC3P_FRAME_SAMPLES * sizeof(**samples_p));\n        ch_block++;\n        out_ch_index += channels_to_process;\n    }\n    *got_frame_ptr = 1;\n    return avctx->block_align;\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 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}']