summaryrefslogtreecommitdiffstats
path: root/gst/avi
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2009-08-04 11:37:16 +0200
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2009-08-10 14:41:16 +0200
commit5b0f7f04e75c65e75d33a7d673a914c31da664d8 (patch)
treef41c526b0422eec7fe94c8f38b795626173a4072 /gst/avi
parenteffa7b46609746987c221e45f8810f190d6ab41d (diff)
avidemux: do not exceed maximum number of supported streams
Diffstat (limited to 'gst/avi')
-rw-r--r--gst/avi/gstavidemux.c13
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;