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: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2132>
This commit is contained in:
Thibault Saunier 2021-03-31 18:07:40 -03:00 committed by GStreamer Marge Bot
parent fe190fb5eb
commit 788dfdbfa6

View file

@ -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);