From: Edward Hervey Date: Tue, 22 Nov 2016 15:56:04 +0000 (+0100) Subject: asfdemux: FILE headers are mandatory in the header X-Git-Tag: 1.12.2~61 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e7ff86665a8e2c77a676546accf07f44b005f0dc;p=platform%2Fupstream%2Fgst-plugins-ugly.git asfdemux: FILE headers are mandatory in the header As per the specification, also avoids ending up trying to play a file with plenty of un-initialized values. https://bugzilla.gnome.org/show_bug.cgi?id=774846 --- diff --git a/gst/asfdemux/gstasfdemux.c b/gst/asfdemux/gstasfdemux.c index c9d7c370..09168a8c 100644 --- a/gst/asfdemux/gstasfdemux.c +++ b/gst/asfdemux/gstasfdemux.c @@ -3575,7 +3575,7 @@ gst_asf_demux_process_header (GstASFDemux * demux, guint8 * data, guint64 size) unknown = gst_asf_demux_get_uint8 (&data, &size); GST_INFO_OBJECT (demux, "object is a header with %u parts", num_objects); - + demux->saw_file_header = FALSE; /* Loop through the header's objects, processing those */ for (i = 0; i < num_objects; ++i) { GST_INFO_OBJECT (demux, "reading header part %u", i); @@ -3585,6 +3585,11 @@ gst_asf_demux_process_header (GstASFDemux * demux, guint8 * data, guint64 size) break; } } + if (!demux->saw_file_header) { + GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL), + ("Header does not have mandatory FILE section")); + return GST_FLOW_ERROR; + } return ret; @@ -3665,6 +3670,8 @@ gst_asf_demux_process_file (GstASFDemux * demux, guint8 * data, guint64 size) packets_count); GST_INFO ("preroll = %" G_GUINT64_FORMAT, demux->preroll); + demux->saw_file_header = TRUE; + return GST_FLOW_OK; /* ERRORS */ diff --git a/gst/asfdemux/gstasfdemux.h b/gst/asfdemux/gstasfdemux.h index 0e8ad852..953b4963 100644 --- a/gst/asfdemux/gstasfdemux.h +++ b/gst/asfdemux/gstasfdemux.h @@ -240,6 +240,8 @@ struct _GstASFDemux { /* parsing 3D */ GstASF3DMode asf_3D_mode; + + gboolean saw_file_header; }; struct _GstASFDemuxClass {