for (i = 0; i < d; i++) {
v = get_bits_long(&ctx->gb, mb);
if (v & (1 << (mb - 1)))
- ctx->deltas[stream_id][i] = v - (1 << mb);
+ ctx->deltas[stream_id][i] = v - (1U << mb);
else
ctx->deltas[stream_id][i] = v;
}
/* get stream length in dwords */
bytestream2_init(&gb, buf, buf_size);
len = bytestream2_get_be32(&gb);
- skip = len * 4 + 4;
if (len == 0)
return 4;
- if (len >= INT_MAX / 4 - 1 || len < 0 || skip > buf_size) {
+ if (len >= INT_MAX / 4 - 1 || len < 0 || len * 4 + 4 > buf_size) {
av_log(ctx->avctx, AV_LOG_ERROR, "Error, invalid stream size.\n");
return AVERROR_INVALIDDATA;
}
+ skip = len * 4 + 4;
toks = bytestream2_get_be32(&gb);
if (toks & 1) {
buf_size - offset);
if (t < 0) {
int j = tm2_stream_order[i];
- memset(l->tokens[j], 0, sizeof(**l->tokens) * l->tok_lens[j]);
+ if (l->tok_lens[j])
+ memset(l->tokens[j], 0, sizeof(**l->tokens) * l->tok_lens[j]);
return t;
}
offset += t;