Commit 53ea595e authored by Vittorio Giovara's avatar 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.
parent ce6d72d1
...@@ -111,7 +111,7 @@ typedef struct MOVStreamContext { ...@@ -111,7 +111,7 @@ typedef struct MOVStreamContext {
MOVStts *ctts_data; MOVStts *ctts_data;
unsigned int stsc_count; unsigned int stsc_count;
MOVStsc *stsc_data; MOVStsc *stsc_data;
int stsc_index; unsigned int stsc_index;
int stsc_sample; int stsc_sample;
unsigned int stps_count; unsigned int stps_count;
unsigned *stps_data; ///< partial sync sample for mpeg-2 open gop unsigned *stps_data; ///< partial sync sample for mpeg-2 open gop
......
...@@ -1983,13 +1983,13 @@ static int mov_read_stsc(MOVContext *c, AVIOContext *pb, MOVAtom atom) ...@@ -1983,13 +1983,13 @@ static int mov_read_stsc(MOVContext *c, AVIOContext *pb, MOVAtom atom)
return 0; 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. */ /* 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; int chunk_count;
...@@ -3982,7 +3982,7 @@ static int mov_seek_stream(AVFormatContext *s, AVStream *st, int64_t timestamp, ...@@ -3982,7 +3982,7 @@ static int mov_seek_stream(AVFormatContext *s, AVStream *st, int64_t timestamp,
{ {
MOVStreamContext *sc = st->priv_data; MOVStreamContext *sc = st->priv_data;
int sample, time_sample; int sample, time_sample;
int i; unsigned int i;
sample = av_index_search_timestamp(st, timestamp, flags); 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); av_log(s, AV_LOG_TRACE, "stream %d, timestamp %"PRId64", sample %d\n", st->index, timestamp, sample);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment