asfdemux: More index handling
authorEdward Hervey <edward@centricular.com>
Tue, 27 Jun 2017 09:48:08 +0000 (11:48 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Tue, 27 Jun 2017 09:49:21 +0000 (11:49 +0200)
In the same vein as the previous commit, the end of the file might have been
cut and therefore contains bogus data.

If the object is too short, consider it as garbage and return a non-fatal
flow.

Regression introduced in 97294eb8bbed1b9dad7d3f2c52dd69eb1812cc06

gst/asfdemux/gstasfdemux.c

index 89404dd88b681cd0749ec4f87493b240308b5d47..317f7723d81e5c8697ad56bbecfcb1a664c41d6c 100644 (file)
@@ -1124,13 +1124,21 @@ gst_asf_demux_pull_indices (GstASFDemux * demux)
     gst_buffer_unmap (buf, &map);
     gst_buffer_replace (&buf, NULL);
 
+    if (ret == ASF_FLOW_NEED_MORE_DATA) {
+      /* Since indices are at the end of the file, if we need more data,
+       * we consider it as a non-fatal corrupted index */
+      ret = GST_FLOW_OK;
+      break;
+    }
+
     if (G_UNLIKELY (ret != GST_FLOW_OK))
       break;
 
     ++num_read;
   }
 
-  GST_DEBUG_OBJECT (demux, "read %u index objects", num_read);
+  GST_DEBUG_OBJECT (demux, "read %u index objects , returning %s", num_read,
+      gst_flow_get_name (ret));
   return ret;
 }