|
|
@@ -431,6 +431,8 @@ static int read_payload_length_info(struct LATMContext *ctx, GetBitContext *gb) |
|
|
|
if (ctx->frame_length_type == 0) { |
|
|
|
int mux_slot_length = 0; |
|
|
|
do { |
|
|
|
if (get_bits_left(gb) < 8) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
tmp = get_bits(gb, 8); |
|
|
|
mux_slot_length += tmp; |
|
|
|
} while (tmp == 255); |
|
|
@@ -460,7 +462,7 @@ static int read_audio_mux_element(struct LATMContext *latmctx, |
|
|
|
} |
|
|
|
if (latmctx->audio_mux_version_A == 0) { |
|
|
|
int mux_slot_length_bytes = read_payload_length_info(latmctx, gb); |
|
|
|
if (mux_slot_length_bytes * 8 > get_bits_left(gb)) { |
|
|
|
if (mux_slot_length_bytes < 0 || mux_slot_length_bytes * 8LL > get_bits_left(gb)) { |
|
|
|
av_log(latmctx->aac_ctx.avctx, AV_LOG_ERROR, "incomplete frame\n"); |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
} else if (mux_slot_length_bytes * 8 + 256 < get_bits_left(gb)) { |
|
|
|