diff --git a/libavformat/mov.c b/libavformat/mov.c index 3eafbf1d87..f7628820b0 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2863,6 +2863,10 @@ static int mov_read_stsz(MOVContext *c, AVIOContext *pb, MOVAtom atom) for (i = 0; i < entries && !pb->eof_reached; i++) { sc->sample_sizes[i] = get_bits_long(&gb, field_size); + if (sc->sample_sizes[i] < 0) { + av_log(c->fc, AV_LOG_ERROR, "Invalid sample size %d\n", sc->sample_sizes[i]); + return AVERROR_INVALIDDATA; + } sc->data_size += sc->sample_sizes[i]; }