From 649348777e492b54cd980108ecac0caf77cea012 Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Wed, 24 Jan 2007 15:46:59 +0000 Subject: [PATCH] stop if current sample is higher than sample count Originally committed as revision 7689 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/mov.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 4e542cd..80fb0a3 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1494,6 +1494,10 @@ static void mov_build_index(MOVContext *mov, AVStream *st) if (stsc_index + 1 < sc->sample_to_chunk_sz && i + 1 == sc->sample_to_chunk[stsc_index + 1].first) stsc_index++; for (j = 0; j < sc->sample_to_chunk[stsc_index].count; j++) { + if (current_sample >= sc->sample_count) { + av_log(mov->fc, AV_LOG_ERROR, "wrong sample count\n"); + goto out; + } keyframe = !sc->keyframe_count || current_sample + 1 == sc->keyframes[stss_index]; if (keyframe) { distance = 0; @@ -1509,8 +1513,7 @@ static void mov_build_index(MOVContext *mov, AVStream *st) current_dts += sc->stts_data[stts_index].duration / sc->time_rate; distance++; stts_sample++; - if (current_sample + 1 < sc->sample_count) - current_sample++; + current_sample++; if (stts_index + 1 < sc->stts_count && stts_sample == sc->stts_data[stts_index].count) { stts_sample = 0; stts_index++; @@ -1578,6 +1581,7 @@ static void mov_build_index(MOVContext *mov, AVStream *st) current_dts += chunk_duration / sc->time_rate; } } + out: /* adjust sample count to avindex entries */ sc->sample_count = st->nb_index_entries; } -- 2.7.4