X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Frmdec.c;h=c8035889390968df9a67cb930a1ae4ee4fa1fb3d;hb=f47540523741fdc98f2467e522dc6dac0ade4a0b;hp=d1758628ad667a4dda9e1585be1f9cfbcfa78896;hpb=3dfe97a841fe6985357357ef0b93601bfe531bf8;p=ffmpeg diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c index d1758628ad6..c8035889390 100644 --- a/libavformat/rmdec.c +++ b/libavformat/rmdec.c @@ -236,6 +236,7 @@ static int rm_read_audio_stream_info(AVFormatContext *s, AVIOContext *pb, return -1; } st->codecpar->block_align = ff_sipr_subpk_size[flavor]; + st->need_parsing = AVSTREAM_PARSE_FULL_RAW; } else { if(sub_packet_size <= 0){ av_log(s, AV_LOG_ERROR, "sub_packet_size is invalid\n"); @@ -934,6 +935,10 @@ ff_rm_parse_packet (AVFormatContext *s, AVIOContext *pb, ast->sub_packet_cnt = 0; rm->audio_stream_num = st->index; + if (st->codecpar->block_align <= 0) { + av_log(s, AV_LOG_ERROR, "Invalid block alignment %d\n", st->codecpar->block_align); + return AVERROR_INVALIDDATA; + } rm->audio_pkt_cnt = h * w / st->codecpar->block_align; } else if ((ast->deint_id == DEINT_ID_VBRF) || (ast->deint_id == DEINT_ID_VBRS)) {