summaryrefslogtreecommitdiff
path: root/gst/sdp
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-07-29 13:09:05 +0100
committerSebastian Dröge <sebastian@centricular.com>2015-07-29 14:35:50 +0100
commita4a2638d86e26b61733bc0dbaf4b1b8c78abb50c (patch)
treeb929ce93e21244152d88548c902e9a2d288dcef1 /gst/sdp
parentb88d93ff7b7e459332ebfa4d57e9aea91a7f6bc9 (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.c11
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),