chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sd-bus: derive uid from cgroup if possible
[elogind.git]
/
src
/
libelogind
/
sd-bus
/
sd-bus.c
diff --git
a/src/libelogind/sd-bus/sd-bus.c
b/src/libelogind/sd-bus/sd-bus.c
index 31a98f387bbec37e15d58ae067b06db938a150fa..fc4f8f3f204b2776df1cb29d69b35cf10b8920a7 100644
(file)
--- a/
src/libelogind/sd-bus/sd-bus.c
+++ b/
src/libelogind/sd-bus/sd-bus.c
@@
-1250,6
+1250,8
@@
fail:
int bus_set_address_user(sd_bus *b) {
const char *e;
int bus_set_address_user(sd_bus *b) {
const char *e;
+ uid_t uid;
+ int r;
assert(b);
assert(b);
@@
-1257,6
+1259,10
@@
int bus_set_address_user(sd_bus *b) {
if (e)
return sd_bus_set_address(b, e);
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;
e = secure_getenv("XDG_RUNTIME_DIR");
if (e) {
_cleanup_free_ char *ee = NULL;
@@
-1265,9
+1271,9
@@
int bus_set_address_user(sd_bus *b) {
if (!ee)
return -ENOMEM;
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
} 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;
if (!b->address)
return -ENOMEM;