From 788dfdbfa65a3b917b993118c0c2bcd7fb00c3ba Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Wed, 31 Mar 2021 18:07:40 -0300 Subject: [PATCH] rtpsrc: Fix wrong/NULL URI handling We can reset the URI to NULL and this fix a deadlock in that case or when the URI was invalid. Part-of: --- gst/rtp/gstrtpsrc.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/gst/rtp/gstrtpsrc.c b/gst/rtp/gstrtpsrc.c index 8ff6f2172e..6f91285ba6 100644 --- a/gst/rtp/gstrtpsrc.c +++ b/gst/rtp/gstrtpsrc.c @@ -177,16 +177,29 @@ gst_rtp_src_set_property (GObject * object, guint prop_id, switch (prop_id) { case PROP_URI:{ GstUri *uri = NULL; + const gchar *str_uri = g_value_get_string (value); GST_RTP_SRC_LOCK (object); - uri = gst_uri_from_string (g_value_get_string (value)); - if (uri == NULL) - break; + uri = gst_uri_from_string (str_uri); + if (uri == NULL) { + if (str_uri) { + GST_RTP_SRC_UNLOCK (object); + GST_ERROR_OBJECT (object, "Invalid uri: %s", str_uri); + + break; + } + } if (self->uri) gst_uri_unref (self->uri); self->uri = uri; + if (!uri) { + GST_RTP_SRC_UNLOCK (object); + + break; + } + /* Recursive set to self, do not use the same lock in all property * setters. */ g_object_set (self, "address", gst_uri_get_host (self->uri), NULL);