From 844c49fcf356a55b83a26a0bb8a5e6d25039f549 Mon Sep 17 00:00:00 2001 From: Sotir Danailov Date: Wed, 8 Jan 2025 23:51:15 +0100 Subject: [PATCH] dbus: replace hardcoded dbus address with environment variable Signed-off-by: Sotir Danailov --- src/lxc/cgroups/cgfsng.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/lxc/cgroups/cgfsng.c b/src/lxc/cgroups/cgfsng.c index b4ab0aa69..eea2b1f6d 100644 --- a/src/lxc/cgroups/cgfsng.c +++ b/src/lxc/cgroups/cgfsng.c @@ -1226,6 +1226,7 @@ static bool start_scope(DBusConnection *connection, const char *scope_name) static DBusConnection *open_systemd(void) { __do_free char *user_bus = NULL; + const char *env_dbus_addr = getenv("DBUS_SESSION_BUS_ADDRESS"); char *s = NULL; DBusMessageIter iter; DBusError dbus_error; @@ -1234,11 +1235,20 @@ static DBusConnection *open_systemd(void) DBusPendingCall* pending; dbus_error_init(&dbus_error); - user_bus = strdup("unix:path=/run/user/1000/bus"); // TODO get from $DBUS_SESSION_BUS_ADDRESS + + if (!env_dbus_addr) { + WARN("Environment variable 'DBUS_SESSION_BUS_ADDRESS' not set"); + user_bus = strdup("unix:path=/run/user/1000/bus"); + } else { + user_bus = strdup(env_dbus_addr); + } + if (!user_bus) { return log_error(NULL, "Failed opening user dbus"); } + TRACE("Using dbus unix socket: '%s'", user_bus); + connection = dbus_connection_open(user_bus, &dbus_error); if (!connection) { DEBUG("Failed opening dbus connection: %s: %s", -- 2.47.2