matroskademux: Don't get stuck at the same offset when searching for clusters

This could happen if there is an invalid cluster with size 0, and in that
case just error out instead of looping forever.
This commit is contained in:
Sebastian Dröge 2014-12-29 15:00:02 +01:00
parent aa94fc6beb
commit e596a3b6a7

View file

@ -1610,6 +1610,11 @@ gst_matroska_demux_search_cluster (GstMatroskaDemux * demux, gint64 * pos)
GST_DEBUG_OBJECT (demux, "cluster is first cluster -> OK"); GST_DEBUG_OBJECT (demux, "cluster is first cluster -> OK");
break; break;
} }
if (newpos == demux->common.offset) {
GST_ERROR_OBJECT (demux, "Stuck at the same offset");
ret = GST_FLOW_ERROR;
goto exit;
}
demux->common.offset = newpos; demux->common.offset = newpos;
ret = gst_matroska_read_common_peek_id_length_pull (&demux->common, ret = gst_matroska_read_common_peek_id_length_pull (&demux->common,
GST_ELEMENT_CAST (demux), &id, &length, &needed); GST_ELEMENT_CAST (demux), &id, &length, &needed);