rtmp2: Need to unescape the userinfo before setting
authorNirbheek Chauhan <nirbheek@centricular.com>
Fri, 28 Aug 2020 21:12:12 +0000 (02:42 +0530)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Sun, 30 Aug 2020 09:53:42 +0000 (09:53 +0000)
This regressed in 827afa206d8c9675f2a7af402396552c2ed1df09. The same
fix was also committed to the webrtc element, but rtmp2 was missed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1547>

gst/rtmp2/gstrtmp2locationhandler.c

index d8e4367..2e421c8 100644 (file)
@@ -212,6 +212,7 @@ uri_handler_set_uri (GstURIHandler * handler, const gchar * string,
 
   userinfo = gst_uri_get_userinfo (uri);
   if (userinfo) {
+    gchar *user, *pass;
     gchar **split = g_strsplit (userinfo, ":", 2);
 
     if (!split || !split[0] || !split[1]) {
@@ -226,8 +227,13 @@ uri_handler_set_uri (GstURIHandler * handler, const gchar * string,
           "assume that the first ':' delineates user:pass. You should escape "
           "the user and pass before adding to the URI.", userinfo);
 
-    g_object_set (self, "username", split[0], "password", split[1], NULL);
+    user = g_uri_unescape_string (split[0], NULL);
+    pass = g_uri_unescape_string (split[1], NULL);
     g_strfreev (split);
+
+    g_object_set (self, "username", user, "password", pass, NULL);
+    g_free (user);
+    g_free (pass);
   }
 
   ret = TRUE;