avformat/matroskaenc: actually enforce the stream limit
authorJames Almer <jamrial@gmail.com>
Mon, 27 Nov 2017 16:39:42 +0000 (13:39 -0300)
committerJames Almer <jamrial@gmail.com>
Fri, 1 Dec 2017 04:25:45 +0000 (01:25 -0300)
Prevents out of array accesses. Adressess ticket #6873

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit 9d464dc3fccb53f1e7c83e3453084c1a7fb90503)

libavformat/matroskaenc.c

index 6f094c4..3c6bb68 100644 (file)
@@ -1858,6 +1858,13 @@ static int mkv_write_header(AVFormatContext *s)
         av_dict_get(s->metadata, "alpha_mode", NULL, 0))
         version = 4;
 
+    if (s->nb_streams > MAX_TRACKS) {
+        av_log(s, AV_LOG_ERROR,
+               "At most %d streams are supported for muxing in Matroska\n",
+               MAX_TRACKS);
+        return AVERROR(EINVAL);
+    }
+
     for (i = 0; i < s->nb_streams; i++) {
         if (s->streams[i]->codecpar->codec_id == AV_CODEC_ID_ATRAC3 ||
             s->streams[i]->codecpar->codec_id == AV_CODEC_ID_COOK ||