From 18f37ffc9aff0eed64752d23fd08823d630975e7 Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Fri, 9 Jul 2010 16:57:33 +0200 Subject: [PATCH] matroskademux: do not error out on a block with unknown tracknumber --- gst/matroska/matroska-demux.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index 1b34b9f9bf..ac104469f6 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -4405,13 +4405,17 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, /* fetch stream from num */ stream_num = gst_matroska_demux_stream_from_num (demux, num); - if (size < 3 || stream_num < 0 || stream_num >= demux->num_streams) { - gst_buffer_unref (buf); - buf = NULL; - GST_WARNING_OBJECT (demux, "Invalid stream %d or size %u", stream_num, - size); + if (G_UNLIKELY (size < 3)) { + GST_WARNING_OBJECT (demux, "Invalid size %u", size); ret = GST_FLOW_ERROR; break; + } else if (G_UNLIKELY (stream_num < 0 || + stream_num >= demux->num_streams)) { + /* let's not give up on a stray invalid track number */ + GST_WARNING_OBJECT (demux, + "Invalid stream %d for track number %" G_GUINT64_FORMAT + "; ignoring block", stream_num); + break; } stream = g_ptr_array_index (demux->src, stream_num);