diff options
author | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2017-04-20 16:17:44 +0100 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2017-05-14 12:20:15 +0200 |
commit | e66548345c6de7ef22da323a93b71d7782b3164d (patch) | |
tree | 9bd004489038298bae04edcbb59278631001864d /libavformat | |
parent | 1485562f6edee18a44446a8cbf2dca7ec16b69ce (diff) | |
download | ffmpeg-e66548345c6de7ef22da323a93b71d7782b3164d.tar.gz |
avformat/webmdashenc: Validate the 'streams' adaptation sets parameter
It should not be a value larger than the number of streams we have,
or it will cause invalid reads and/or SIGSEGV.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit ec07efa70012845e8642df67a4a773f510a17088)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/webmdashenc.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libavformat/webmdashenc.c b/libavformat/webmdashenc.c index 740fd8eb01..9dc9b36d31 100644 --- a/libavformat/webmdashenc.c +++ b/libavformat/webmdashenc.c @@ -462,7 +462,11 @@ static int parse_adaptation_sets(AVFormatContext *s) if (as->streams == NULL) return AVERROR(ENOMEM); as->streams[as->nb_streams - 1] = to_integer(p, q - p + 1); - if (as->streams[as->nb_streams - 1] < 0) return -1; + if (as->streams[as->nb_streams - 1] < 0 || + as->streams[as->nb_streams - 1] >= s->nb_streams) { + av_log(s, AV_LOG_ERROR, "Invalid value for 'streams' in adapation_sets.\n"); + return AVERROR(EINVAL); + } if (*q == '\0') break; if (*q == ' ') state = new_set; p = ++q; |