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 <matthieu.bouron@stupeflix.com>

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
This commit is contained in:
Vittorio Giovara 2016-07-13 15:02:41 -04:00
parent 90bc423212
commit ed9b2a5178
1 changed files with 7 additions and 2 deletions

View File

@ -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;