diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-04-20 08:54:23 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-05-01 07:50:30 +0200 |
commit | 4b1c19a054432b4a5bc3e90b8c186dc25a416ebd (patch) | |
tree | 57b5965d5b37b641681051d96989bb789a518671 /libavformat/matroskadec.c | |
parent | bdaa98dd4aac08b8f23f959cbb5a80db2dacd14a (diff) |
avformat/matroskadec: Simplify checks for cook and ATRAC3
Some conditions which don't change and which can therefore be checked
in read_header() were instead rechecked upon parsing each block. This
has been changed.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavformat/matroskadec.c')
-rw-r--r-- | libavformat/matroskadec.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 1dc0b77962..5643e15a20 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2624,7 +2624,8 @@ static int matroska_parse_tracks(AVFormatContext *s) return AVERROR_INVALIDDATA; track->audio.sub_packet_size = ff_sipr_subpk_size[flavor]; st->codecpar->bit_rate = sipr_bit_rate[flavor]; - } else if (track->audio.sub_packet_size <= 0) + } else if (track->audio.sub_packet_size <= 0 || + track->audio.frame_size % track->audio.sub_packet_size) return AVERROR_INVALIDDATA; st->codecpar->block_align = track->audio.sub_packet_size; extradata_offset = 78; @@ -3138,7 +3139,7 @@ static int matroska_parse_rm_audio(MatroskaDemuxContext *matroska, } memcpy(track->audio.buf + y * w, data, w); } else { - if (size < sps * w / sps || h<=0 || w%sps) { + if (size < w) { av_log(matroska->ctx, AV_LOG_ERROR, "Corrupt generic RM-style audio packet size\n"); return AVERROR_INVALIDDATA; |