diff options
author | Kay Sievers <kay@vrfy.org> | 2015-09-05 23:06:31 +0200 |
---|---|---|
committer | Kay Sievers <kay@vrfy.org> | 2015-09-05 23:06:31 +0200 |
commit | 718909ec33d15ddfb0eb2f1a504761a183fdf0db (patch) | |
tree | 42fd8073948632774dee6a331b9007d2fbac4747 | |
parent | b47c788854600ca691382d222ffeac335f619da9 (diff) | |
parent | 64ce4ad758f43029ea020afdacddad55fffa174d (diff) |
Merge pull request #1160 from dvdhrm/bus-user
sd-bus: derive uid from cgroup if possible
-rw-r--r-- | src/libsystemd/sd-bus/sd-bus.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index 4ed508427e..4a9181613a 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -1241,6 +1241,8 @@ fail: int bus_set_address_user(sd_bus *b) { const char *e; + uid_t uid; + int r; assert(b); @@ -1248,6 +1250,10 @@ int bus_set_address_user(sd_bus *b) { if (e) return sd_bus_set_address(b, e); + r = cg_pid_get_owner_uid(0, &uid); + if (r < 0) + uid = getuid(); + e = secure_getenv("XDG_RUNTIME_DIR"); if (e) { _cleanup_free_ char *ee = NULL; @@ -1256,9 +1262,9 @@ int bus_set_address_user(sd_bus *b) { if (!ee) return -ENOMEM; - (void) asprintf(&b->address, KERNEL_USER_BUS_ADDRESS_FMT ";" UNIX_USER_BUS_ADDRESS_FMT, getuid(), ee); + (void) asprintf(&b->address, KERNEL_USER_BUS_ADDRESS_FMT ";" UNIX_USER_BUS_ADDRESS_FMT, uid, ee); } else - (void) asprintf(&b->address, KERNEL_USER_BUS_ADDRESS_FMT, getuid()); + (void) asprintf(&b->address, KERNEL_USER_BUS_ADDRESS_FMT, uid); if (!b->address) return -ENOMEM; |