avformat/mov: reject negative ELST durations

Fixes: multiple integer overflows
Fixes: 401016767/clusterfuzz-testcase-minimized-ffmpeg_dem_MOV_fuzzer-6242067591790592

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 9fc2702f6f)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer
2025-05-10 23:39:53 +02:00
parent 69c03845ff
commit 039af70fd3

View File

@@ -5841,6 +5841,11 @@ static int mov_read_elst(MOVContext *c, AVIOContext *pb, MOVAtom atom)
c->fc->nb_streams-1, i, e->time); c->fc->nb_streams-1, i, e->time);
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
if (e->duration < 0) {
av_log(c->fc, AV_LOG_ERROR, "Track %d, edit %d: Invalid edit list duration=%"PRId64"\n",
c->fc->nb_streams-1, i, e->duration);
return AVERROR_INVALIDDATA;
}
} }
sc->elst_count = i; sc->elst_count = i;