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.
pull/273/head
Vittorio Giovara 8 years ago
parent ce6d72d107
commit 53ea595eec
  1. 2
      libavformat/isom.h
  2. 8
      libavformat/mov.c

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

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

Loading…
Cancel
Save