avcodec/movtextdec: Check style_start/end

Limits based on 3GPP TS 26.245 V14.0.0
Fixes: Timeout
Fixes: 6377/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MOVTEXT_fuzzer-5175929115508736

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer 2018-04-08 03:29:44 +02:00
parent c837918f50
commit 249aca8f98

View File

@ -299,6 +299,14 @@ static int decode_styl(const uint8_t *tsmb, MovTextContext *m, AVPacket *avpkt)
m->s_temp->style_start = AV_RB16(tsmb); m->s_temp->style_start = AV_RB16(tsmb);
tsmb += 2; tsmb += 2;
m->s_temp->style_end = AV_RB16(tsmb); m->s_temp->style_end = AV_RB16(tsmb);
if ( m->s_temp->style_end < m->s_temp->style_start
|| (m->count_s && m->s_temp->style_start < m->s[m->count_s - 1]->style_end)) {
av_freep(&m->s_temp);
mov_text_cleanup(m);
return AVERROR(ENOMEM);
}
tsmb += 2; tsmb += 2;
m->s_temp->style_fontID = AV_RB16(tsmb); m->s_temp->style_fontID = AV_RB16(tsmb);
tsmb += 2; tsmb += 2;