libavcodec/mlpdec.c:1243: error: Integer Overflow L2
  ([0, +oo] - 1):unsigned32 by call to `ff_mlp_checksum8`.

libavcodec/mlpdec.c:1091:5: Assignment
1089.     unsigned int length, substr;
1090.     unsigned int substream_start;
1091.     unsigned int header_size = 4;
          ^
1092.     unsigned int substr_header_size = 0;
1093.     uint8_t substream_parity_present[MAX_SUBSTREAMS];

libavcodec/mlpdec.c:1170:9: Assignment
1168. 
1169.         substream_parity_present[substr] = checkdata_present;
1170.         substream_data_len[substr] = end - substream_start;
              ^
1171.         substream_start = end;
1172.     }

libavcodec/mlpdec.c:1243:24: Call
1241. 
1242.             parity   = ff_mlp_calculate_parity(buf, substream_data_len[substr] - 2);
1243.             checksum = ff_mlp_checksum8       (buf, substream_data_len[substr] - 2);
                             ^
1244. 
1245.             if ((get_bits(&gb, 8) ^ parity) != 0xa9    )

libavcodec/mlp.c:73:1: <LHS trace>
71. }
72. 
73. uint8_t ff_mlp_checksum8(const uint8_t *buf, unsigned int buf_size)
    ^
74. {
75.     uint8_t checksum = av_crc(crc_63, 0x3c, buf, buf_size - 1); // crc_63[0xa2] == 0x3c

libavcodec/mlp.c:73:1: Parameter `buf_size`
  71. }
  72. 
  73. uint8_t ff_mlp_checksum8(const uint8_t *buf, unsigned int buf_size)
      ^
  74. {
  75.     uint8_t checksum = av_crc(crc_63, 0x3c, buf, buf_size - 1); // crc_63[0xa2] == 0x3c

libavcodec/mlp.c:75:24: Binary operation: ([0, +oo] - 1):unsigned32 by call to `ff_mlp_checksum8` 
  73. uint8_t ff_mlp_checksum8(const uint8_t *buf, unsigned int buf_size)
  74. {
  75.     uint8_t checksum = av_crc(crc_63, 0x3c, buf, buf_size - 1); // crc_63[0xa2] == 0x3c
                             ^
  76.     checksum ^= buf[buf_size-1];
  77.     return checksum;

uint8_t ff_mlp_checksum8(const uint8_t *buf, unsigned int buf_size)
{
    uint8_t checksum = av_crc(crc_63, 0x3c, buf, buf_size - 1);
    checksum ^= buf[buf_size-1];
    return checksum;
}
['static int read_access_unit(AVCodecContext *avctx, void* data,\n                            int *got_frame_ptr, AVPacket *avpkt)\n{\n    const uint8_t *buf = avpkt->data;\n    int buf_size = avpkt->size;\n    MLPDecodeContext *m = avctx->priv_data;\n    GetBitContext gb;\n    unsigned int length, substr;\n    unsigned int substream_start;\n    unsigned int header_size = 4;\n    unsigned int substr_header_size = 0;\n    uint8_t substream_parity_present[MAX_SUBSTREAMS];\n    uint16_t substream_data_len[MAX_SUBSTREAMS];\n    uint8_t parity_bits;\n    int ret;\n    if (buf_size < 4)\n        return 0;\n    length = (AV_RB16(buf) & 0xfff) * 2;\n    if (length < 4 || length > buf_size)\n        return AVERROR_INVALIDDATA;\n    init_get_bits(&gb, (buf + 4), (length - 4) * 8);\n    m->is_major_sync_unit = 0;\n    if (show_bits_long(&gb, 31) == (0xf8726fba >> 1)) {\n        if (read_major_sync(m, &gb) < 0)\n            goto error;\n        m->is_major_sync_unit = 1;\n        header_size += m->major_sync_header_size;\n    }\n    if (!m->params_valid) {\n        av_log(m->avctx, AV_LOG_WARNING,\n               "Stream parameters not seen; skipping frame.\\n");\n        *got_frame_ptr = 0;\n        return length;\n    }\n    substream_start = 0;\n    for (substr = 0; substr < m->num_substreams; substr++) {\n        int extraword_present, checkdata_present, end, nonrestart_substr;\n        extraword_present = get_bits1(&gb);\n        nonrestart_substr = get_bits1(&gb);\n        checkdata_present = get_bits1(&gb);\n        skip_bits1(&gb);\n        end = get_bits(&gb, 12) * 2;\n        substr_header_size += 2;\n        if (extraword_present) {\n            if (m->avctx->codec_id == AV_CODEC_ID_MLP) {\n                av_log(m->avctx, AV_LOG_ERROR, "There must be no extraword for MLP.\\n");\n                goto error;\n            }\n            skip_bits(&gb, 16);\n            substr_header_size += 2;\n        }\n        if (!(nonrestart_substr ^ m->is_major_sync_unit)) {\n            av_log(m->avctx, AV_LOG_ERROR, "Invalid nonrestart_substr.\\n");\n            goto error;\n        }\n        if (end + header_size + substr_header_size > length) {\n            av_log(m->avctx, AV_LOG_ERROR,\n                   "Indicated length of substream %d data goes off end of "\n                   "packet.\\n", substr);\n            end = length - header_size - substr_header_size;\n        }\n        if (end < substream_start) {\n            av_log(avctx, AV_LOG_ERROR,\n                   "Indicated end offset of substream %d data "\n                   "is smaller than calculated start offset.\\n",\n                   substr);\n            goto error;\n        }\n        if (substr > m->max_decoded_substream)\n            continue;\n        substream_parity_present[substr] = checkdata_present;\n        substream_data_len[substr] = end - substream_start;\n        substream_start = end;\n    }\n    parity_bits  = ff_mlp_calculate_parity(buf, 4);\n    parity_bits ^= ff_mlp_calculate_parity(buf + header_size, substr_header_size);\n    if ((((parity_bits >> 4) ^ parity_bits) & 0xF) != 0xF) {\n        av_log(avctx, AV_LOG_ERROR, "Parity check failed.\\n");\n        goto error;\n    }\n    buf += header_size + substr_header_size;\n    for (substr = 0; substr <= m->max_decoded_substream; substr++) {\n        SubStream *s = &m->substream[substr];\n        init_get_bits(&gb, buf, substream_data_len[substr] * 8);\n        m->matrix_changed = 0;\n        memset(m->filter_changed, 0, sizeof(m->filter_changed));\n        s->blockpos = 0;\n        do {\n            if (get_bits1(&gb)) {\n                if (get_bits1(&gb)) {\n                    if (read_restart_header(m, &gb, buf, substr) < 0)\n                        goto next_substr;\n                    s->restart_seen = 1;\n                }\n                if (!s->restart_seen)\n                    goto next_substr;\n                if (read_decoding_params(m, &gb, substr) < 0)\n                    goto next_substr;\n            }\n            if (!s->restart_seen)\n                goto next_substr;\n            if ((ret = read_block_data(m, &gb, substr)) < 0)\n                return ret;\n            if (get_bits_count(&gb) >= substream_data_len[substr] * 8)\n                goto substream_length_mismatch;\n        } while (!get_bits1(&gb));\n        skip_bits(&gb, (-get_bits_count(&gb)) & 15);\n        if (substream_data_len[substr] * 8 - get_bits_count(&gb) >= 32) {\n            int shorten_by;\n            if (get_bits(&gb, 16) != 0xD234)\n                return AVERROR_INVALIDDATA;\n            shorten_by = get_bits(&gb, 16);\n            if      (m->avctx->codec_id == AV_CODEC_ID_TRUEHD && shorten_by  & 0x2000)\n                s->blockpos -= FFMIN(shorten_by & 0x1FFF, s->blockpos);\n            else if (m->avctx->codec_id == AV_CODEC_ID_MLP    && shorten_by != 0xD234)\n                return AVERROR_INVALIDDATA;\n            if (substr == m->max_decoded_substream)\n                av_log(m->avctx, AV_LOG_INFO, "End of stream indicated.\\n");\n        }\n        if (substream_parity_present[substr]) {\n            uint8_t parity, checksum;\n            if (substream_data_len[substr] * 8 - get_bits_count(&gb) != 16)\n                goto substream_length_mismatch;\n            parity   = ff_mlp_calculate_parity(buf, substream_data_len[substr] - 2);\n            checksum = ff_mlp_checksum8       (buf, substream_data_len[substr] - 2);\n            if ((get_bits(&gb, 8) ^ parity) != 0xa9    )\n                av_log(m->avctx, AV_LOG_ERROR, "Substream %d parity check failed.\\n", substr);\n            if ( get_bits(&gb, 8)           != checksum)\n                av_log(m->avctx, AV_LOG_ERROR, "Substream %d checksum failed.\\n"    , substr);\n        }\n        if (substream_data_len[substr] * 8 != get_bits_count(&gb))\n            goto substream_length_mismatch;\nnext_substr:\n        if (!s->restart_seen)\n            av_log(m->avctx, AV_LOG_ERROR,\n                   "No restart header present in substream %d.\\n", substr);\n        buf += substream_data_len[substr];\n    }\n    rematrix_channels(m, m->max_decoded_substream);\n    if ((ret = output_data(m, m->max_decoded_substream, data, got_frame_ptr)) < 0)\n        return ret;\n    return length;\nsubstream_length_mismatch:\n    av_log(m->avctx, AV_LOG_ERROR, "substream %d length mismatch\\n", substr);\n    return AVERROR_INVALIDDATA;\nerror:\n    m->params_valid = 0;\n    return AVERROR_INVALIDDATA;\n}', 'uint8_t ff_mlp_checksum8(const uint8_t *buf, unsigned int buf_size)\n{\n    uint8_t checksum = av_crc(crc_63, 0x3c, buf, buf_size - 1);\n    checksum ^= buf[buf_size-1];\n    return checksum;\n}']