avidemux: do not exceed maximum number of supported streams
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 4 Aug 2009 09:37:16 +0000 (11:37 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 10 Aug 2009 12:41:16 +0000 (14:41 +0200)
gst/avi/gstavidemux.c

index 71a1fa2..925bf55 100644 (file)
@@ -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;