matroskademux: Don't get stuck at the same offset when searching for clusters
authorSebastian Dröge <sebastian@centricular.com>
Mon, 29 Dec 2014 14:00:02 +0000 (15:00 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 29 Dec 2014 14:02:52 +0000 (15:02 +0100)
This could happen if there is an invalid cluster with size 0, and in that
case just error out instead of looping forever.

gst/matroska/matroska-demux.c

index cdecceb..9b2bb0a 100644 (file)
@@ -1610,6 +1610,11 @@ gst_matroska_demux_search_cluster (GstMatroskaDemux * demux, gint64 * pos)
         GST_DEBUG_OBJECT (demux, "cluster is first cluster -> OK");
         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;
       ret = gst_matroska_read_common_peek_id_length_pull (&demux->common,
           GST_ELEMENT_CAST (demux), &id, &length, &needed);