diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2015-07-29 13:09:05 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2015-07-29 14:35:50 +0100 |
commit | a4a2638d86e26b61733bc0dbaf4b1b8c78abb50c (patch) | |
tree | b929ce93e21244152d88548c902e9a2d288dcef1 /gst/sdp | |
parent | b88d93ff7b7e459332ebfa4d57e9aea91a7f6bc9 (diff) |
sdpdemux: Don't assert in GstAdapter if no data was received before EOS
Diffstat (limited to 'gst/sdp')
-rw-r--r-- | gst/sdp/gstsdpdemux.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gst/sdp/gstsdpdemux.c b/gst/sdp/gstsdpdemux.c index 1c02edcda..908390e59 100644 --- a/gst/sdp/gstsdpdemux.c +++ b/gst/sdp/gstsdpdemux.c @@ -1276,7 +1276,7 @@ gst_sdp_demux_handle_message (GstBin * bin, GstMessage * message) static gboolean gst_sdp_demux_start (GstSDPDemux * demux) { - guint8 *data; + guint8 *data = NULL; guint size; gint i, n_streams; GstSDPMessage sdp = { 0 }; @@ -1291,6 +1291,9 @@ gst_sdp_demux_start (GstSDPDemux * demux) GST_DEBUG_OBJECT (demux, "parse SDP..."); size = gst_adapter_available (demux->adapter); + if (size == 0) + goto no_data; + data = gst_adapter_take (demux->adapter, size); gst_sdp_message_init (&sdp); @@ -1434,6 +1437,12 @@ no_manager: ("Could not create RTP session manager.")); goto done; } +no_data: + { + GST_ELEMENT_ERROR (demux, STREAM, TYPE_NOT_FOUND, (NULL), + ("Empty SDP message.")); + goto done; + } could_not_parse: { GST_ELEMENT_ERROR (demux, STREAM, TYPE_NOT_FOUND, (NULL), |