assert_return(bus, -EINVAL);
assert_return(name, -EINVAL);
- assert_return(mask <= _SD_BUS_CREDS_MAX, -ENOTSUP);
+ assert_return(mask <= _SD_BUS_CREDS_ALL, -ENOTSUP);
assert_return(mask == 0 || creds, -EINVAL);
assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN);
assert_return(!bus_pid_changed(bus), -ECHILD);
int r;
assert_return(pid >= 0, -EINVAL);
- assert_return(mask <= _SD_BUS_CREDS_MAX, -ENOTSUP);
+ assert_return(mask <= _SD_BUS_CREDS_ALL, -ENOTSUP);
assert_return(ret, -EINVAL);
if (pid == 0)
return r;
}
}
+}
- return -EINVAL;
+static int status(sd_bus *bus, char *argv[]) {
+ _cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
+ pid_t pid;
+ int r;
+
+ assert(bus);
+
+ if (strv_length(argv) != 2) {
+ log_error("Expects one argument.");
+ return -EINVAL;
+ }
+
+ r = parse_pid(argv[1], &pid);
+ if (r < 0)
+ r = sd_bus_get_owner(bus, argv[1], _SD_BUS_CREDS_ALL, &creds);
+ else
+ r = sd_bus_creds_new_from_pid(pid, _SD_BUS_CREDS_ALL, &creds);
+
+ if (r < 0) {
+ log_error("Failed to get credentials: %s", strerror(-r));
+ return r;
+ }
+
+ bus_creds_dump(creds, NULL);
+ return 0;
}
static int help(void) {
if (streq(argv[optind], "monitor"))
return monitor(bus, argv + optind);
+ if (streq(argv[optind], "status"))
+ return status(bus, argv + optind);
+
if (streq(argv[optind], "help"))
return help();
_public_ int sd_bus_negotiate_attach_creds(sd_bus *bus, uint64_t mask) {
assert_return(bus, -EINVAL);
- assert_return(mask <= _SD_BUS_CREDS_MAX, -EINVAL);
+ assert_return(mask <= _SD_BUS_CREDS_ALL, -EINVAL);
assert_return(bus->state == BUS_UNSET, -EPERM);
assert_return(!bus_pid_changed(bus), -ECHILD);
int r;
assert_return(bus, -EINVAL);
- assert_return(mask <= _SD_BUS_CREDS_MAX, -ENOTSUP);
+ assert_return(mask <= _SD_BUS_CREDS_ALL, -ENOTSUP);
assert_return(ret, -EINVAL);
assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN);
assert_return(!bus_pid_changed(bus), -ECHILD);
_cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
int r;
- r = sd_bus_creds_new_from_pid(0, _SD_BUS_CREDS_MAX, &creds);
+ r = sd_bus_creds_new_from_pid(0, _SD_BUS_CREDS_ALL, &creds);
assert_se(r >= 0);
bus_creds_dump(creds, NULL);
creds = sd_bus_creds_unref(creds);
- r = sd_bus_creds_new_from_pid(1, _SD_BUS_CREDS_MAX, &creds);
+ r = sd_bus_creds_new_from_pid(1, _SD_BUS_CREDS_ALL, &creds);
if (r != -EACCES) {
assert_se(r >= 0);
putchar('\n');
assert_se(r >= 0);
assert_se(sd_bus_negotiate_attach_timestamp(a, 1) >= 0);
- assert_se(sd_bus_negotiate_attach_creds(a, _SD_BUS_CREDS_MAX) >= 0);
+ assert_se(sd_bus_negotiate_attach_creds(a, _SD_BUS_CREDS_ALL) >= 0);
assert_se(sd_bus_negotiate_attach_timestamp(b, 1) >= 0);
- assert_se(sd_bus_negotiate_attach_creds(b, _SD_BUS_CREDS_MAX) >= 0);
+ assert_se(sd_bus_negotiate_attach_creds(b, _SD_BUS_CREDS_ALL) >= 0);
r = sd_bus_start(a);
assert_se(r >= 0);
SD_BUS_CREDS_AUDIT_LOGIN_UID = 1ULL << 21,
SD_BUS_CREDS_UNIQUE_NAME = 1ULL << 22,
SD_BUS_CREDS_WELL_KNOWN_NAMES = 1ULL << 23,
- _SD_BUS_CREDS_MAX = (1ULL << 24) -1,
+ _SD_BUS_CREDS_ALL = (1ULL << 24) -1,
};
/* Callbacks */