From 980c195db2b46b1d9b198a9e504adf02a8c05f5b Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Tue, 24 Sep 2013 10:07:25 -0700 Subject: asfdemux: Parse last simple index entry The entry size is fixed at 6, fix typo to finish parsing the index correctly until the last sample --- gst/asfdemux/gstasfdemux.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gst/asfdemux/gstasfdemux.c b/gst/asfdemux/gstasfdemux.c index 4c4278dc..a19d223c 100644 --- a/gst/asfdemux/gstasfdemux.c +++ b/gst/asfdemux/gstasfdemux.c @@ -3574,8 +3574,13 @@ gst_asf_demux_process_simple_index (GstASFDemux * demux, guint8 * data, demux->sidx_entries = g_new0 (AsfSimpleIndexEntry, count); for (i = 0; i < count; ++i) { - if (G_UNLIKELY (size <= 6)) + if (G_UNLIKELY (size < 6)) { + /* adjust for broken files, to avoid having entries at the end + * of the parsed index that point to time=0. Resulting in seeking to + * the end of the file leading back to the beginning */ + demux->sidx_num_entries -= (count - i); break; + } demux->sidx_entries[i].packet = gst_asf_demux_get_uint32 (&data, &size); demux->sidx_entries[i].count = gst_asf_demux_get_uint16 (&data, &size); GST_LOG_OBJECT (demux, "%" GST_TIME_FORMAT " = packet %4u count : %2d", -- cgit v1.2.1