diff options
author | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2009-08-04 11:37:16 +0200 |
---|---|---|
committer | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2009-08-10 14:41:16 +0200 |
commit | 5b0f7f04e75c65e75d33a7d673a914c31da664d8 (patch) | |
tree | f41c526b0422eec7fe94c8f38b795626173a4072 /gst/avi | |
parent | effa7b46609746987c221e45f8810f190d6ab41d (diff) |
avidemux: do not exceed maximum number of supported streams
Diffstat (limited to 'gst/avi')
-rw-r--r-- | gst/avi/gstavidemux.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c index 71a1fa20..925bf558 100644 --- a/gst/avi/gstavidemux.c +++ b/gst/avi/gstavidemux.c @@ -1464,7 +1464,7 @@ too_small: static gboolean gst_avi_demux_parse_stream (GstAviDemux * avi, GstBuffer * buf) { - avi_stream_context *stream = &avi->stream[avi->num_streams]; + avi_stream_context *stream; GstElementClass *klass; GstPadTemplate *templ; GstBuffer *sub = NULL; @@ -1482,6 +1482,17 @@ gst_avi_demux_parse_stream (GstAviDemux * avi, GstBuffer * buf) GST_DEBUG_OBJECT (avi, "Parsing stream"); + if (avi->num_streams >= GST_AVI_DEMUX_MAX_STREAMS) { + GST_WARNING_OBJECT (avi, + "maximum no of streams (%d) exceeded, ignoring stream", + GST_AVI_DEMUX_MAX_STREAMS); + gst_buffer_unref (buf); + /* not a fatal error, let's say */ + return TRUE; + } + + stream = &avi->stream[avi->num_streams]; + /* initial settings */ stream->idx_duration = GST_CLOCK_TIME_NONE; stream->hdr_duration = GST_CLOCK_TIME_NONE; |