Module: libav Branch: master Commit: ed9b2a5178d7a7c5a95694da3a808af327f36aff
Author: Vittorio Giovara <[email protected]> Committer: Vittorio Giovara <[email protected]> Date: Wed Jul 13 15:02:41 2016 -0400 mov: Rework the check for invalid indexes in stsc There are samples with invalid stsc that may work fine as is and do not need extradata change. So ignore any out of range index, and error out only when explode is set. Found-by: Matthieu Bouron <[email protected]> Signed-off-by: Vittorio Giovara <[email protected]> --- libavformat/mov.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 826be02..ff39b58 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1949,8 +1949,13 @@ static int mov_read_stsc(MOVContext *c, AVIOContext *pb, MOVAtom atom) sc->stsc_data[i].first = avio_rb32(pb); sc->stsc_data[i].count = avio_rb32(pb); sc->stsc_data[i].id = avio_rb32(pb); - if (sc->stsc_data[i].id > sc->stsd_count) - return AVERROR_INVALIDDATA; + if (sc->stsc_data[i].id < 0 || sc->stsc_data[i].id > sc->stsd_count) { + sc->stsc_data[i].id = 0; + if (c->fc->error_recognition & AV_EF_EXPLODE) { + av_log(c->fc, AV_LOG_ERROR, "Invalid stsc index.\n"); + return AVERROR_INVALIDDATA; + } + } } sc->stsc_count = i; _______________________________________________ libav-commits mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-commits
