[FFmpeg-cvslog] mov: Rework stsc index validation

Vittorio Giovara git at videolan.org
Thu Sep 28 02:47:12 EEST 2017


ffmpeg | branch: master | Vittorio Giovara <vittorio.giovara at gmail.com> | Fri Feb  3 13:05:27 2017 +0100| [53ea595eec984e3109310e8bb7ff4b5786d91057] | committer: Vittorio Giovara

mov: Rework stsc index validation

In order to avoid potential integer overflow change the comparison
and make sure to use the same unsigned type for both elements.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=53ea595eec984e3109310e8bb7ff4b5786d91057
---

 libavformat/isom.h | 2 +-
 libavformat/mov.c  | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/libavformat/isom.h b/libavformat/isom.h
index 85b876106f..8cc5ab744d 100644
--- a/libavformat/isom.h
+++ b/libavformat/isom.h
@@ -111,7 +111,7 @@ typedef struct MOVStreamContext {
     MOVStts *ctts_data;
     unsigned int stsc_count;
     MOVStsc *stsc_data;
-    int stsc_index;
+    unsigned int stsc_index;
     int stsc_sample;
     unsigned int stps_count;
     unsigned *stps_data;  ///< partial sync sample for mpeg-2 open gop
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 2810960e87..11bcff035c 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1983,13 +1983,13 @@ static int mov_read_stsc(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     return 0;
 }
 
-static inline int mov_stsc_index_valid(int index, int count)
+static inline int mov_stsc_index_valid(unsigned int index, unsigned int count)
 {
-    return index + 1 < count;
+    return index < count - 1;
 }
 
 /* Compute the samples value for the stsc entry at the given index. */
-static inline int mov_get_stsc_samples(MOVStreamContext *sc, int index)
+static inline int mov_get_stsc_samples(MOVStreamContext *sc, unsigned int index)
 {
     int chunk_count;
 
@@ -3982,7 +3982,7 @@ static int mov_seek_stream(AVFormatContext *s, AVStream *st, int64_t timestamp,
 {
     MOVStreamContext *sc = st->priv_data;
     int sample, time_sample;
-    int i;
+    unsigned int i;
 
     sample = av_index_search_timestamp(st, timestamp, flags);
     av_log(s, AV_LOG_TRACE, "stream %d, timestamp %"PRId64", sample %d\n", st->index, timestamp, sample);



More information about the ffmpeg-cvslog mailing list