summaryrefslogtreecommitdiff
path: root/dbus
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2022-07-15 19:13:47 +0400
committerMarc-André Lureau <marcandre.lureau@redhat.com>2022-07-18 11:11:11 +0400
commitc7a98fd20bc0b3db14b72790e4d23bf97e35e010 (patch)
tree0da9b32ada8f915042e71db71bc5e3e040df8b09 /dbus
parenta3850d399c20ea4f57085a4adc36b7526daad5e5 (diff)
downloaddbus-c7a98fd20bc0b3db14b72790e4d23bf97e35e010.tar.gz
Escape socket path when building the D-Bus address
Fixes: https://gitlab.freedesktop.org/dbus/dbus/-/issues/405 Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Diffstat (limited to 'dbus')
-rw-r--r--dbus/dbus-transport-socket.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/dbus/dbus-transport-socket.c b/dbus/dbus-transport-socket.c
index 9f9d9539..baf5b813 100644
--- a/dbus/dbus-transport-socket.c
+++ b/dbus/dbus-transport-socket.c
@@ -1507,9 +1507,6 @@ _dbus_transport_open_socket(DBusAddressEntry *entry,
* Creates a new transport for the given Unix domain socket
* path. This creates a client-side of a transport.
*
- * @todo once we add a way to escape paths in a dbus
- * address, this function needs to do escaping.
- *
* @param path the path to the domain socket.
* @param abstract #TRUE to use abstract socket namespace
* @param error address where an error can be returned.
@@ -1523,6 +1520,7 @@ _dbus_transport_new_for_domain_socket (const char *path,
DBusSocket fd = DBUS_SOCKET_INIT;
DBusTransport *transport;
DBusString address;
+ DBusString unescaped_path;
_DBUS_ASSERT_ERROR_IS_CLEAR (error);
@@ -1532,11 +1530,13 @@ _dbus_transport_new_for_domain_socket (const char *path,
return NULL;
}
+ _dbus_string_init_const (&unescaped_path, path);
+
if ((abstract &&
!_dbus_string_append (&address, "unix:abstract=")) ||
(!abstract &&
!_dbus_string_append (&address, "unix:path=")) ||
- !_dbus_string_append (&address, path))
+ !_dbus_address_append_escaped (&address, &unescaped_path))
{
dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL);
goto failed_0;