#include "bus-control.h"
#include "bus-bloom.h"
#include "bus-util.h"
+#include "cgroup-util.h"
_public_ int sd_bus_get_unique_name(sd_bus *bus, const char **unique) {
int r;
m = (SD_BUS_CREDS_UID | SD_BUS_CREDS_GID | SD_BUS_CREDS_PID) & mask;
if (m) {
- c->uid = item->creds.uid;
- c->pid = item->creds.pid;
- c->gid = item->creds.gid;
+ c->uid = (uid_t) item->creds.uid;
+ c->pid = (pid_t) item->creds.pid;
+ c->gid = (gid_t) item->creds.gid;
c->mask |= m;
}
if (mask & SD_BUS_CREDS_TID && item->creds.tid > 0) {
- c->tid = item->creds.tid;
+ c->tid = (pid_t) item->creds.tid;
c->mask |= SD_BUS_CREDS_TID;
}
goto fail;
}
+ if (!bus->cgroup_root) {
+ r = cg_get_root_path(&bus->cgroup_root);
+ if (r < 0)
+ goto fail;
+ }
+
+ c->cgroup_root = strdup(bus->cgroup_root);
+ if (!c->cgroup_root) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
c->mask |= m;
}
break;