asfdemux: Handle EOS in push-mode on corrupted files
authorEdward Hervey <edward@centricular.com>
Tue, 22 Nov 2016 16:14:44 +0000 (17:14 +0100)
committerEdward Hervey <bilboed@bilboed.com>
Tue, 22 Nov 2016 17:21:46 +0000 (18:21 +0100)
It is possible no streams were activated when receiving EOS, if so
handled it as if we hadn't seen the header

https://bugzilla.gnome.org/show_bug.cgi?id=774846

gst/asfdemux/gstasfdemux.c

index 09168a8..e04f5be 100644 (file)
@@ -448,6 +448,13 @@ gst_asf_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
         break;
       }
       flow = gst_asf_demux_push_complete_payloads (demux, TRUE);
+      if (!demux->activated_streams) {
+        /* If we still haven't got activated streams, the file is most likely corrupt */
+        GST_ELEMENT_ERROR (demux, STREAM, WRONG_TYPE,
+            (_("This stream contains no data.")),
+            ("got eos and didn't receive a complete header object"));
+        break;
+      }
       if (flow < GST_FLOW_EOS || flow == GST_FLOW_NOT_LINKED) {
         GST_ELEMENT_FLOW_ERROR (demux, flow);
         break;