assert(a);
assert(b);
- r = sd_bus_get_peer_creds(b, SD_BUS_CREDS_UID|SD_BUS_CREDS_PID|SD_BUS_CREDS_CMDLINE|SD_BUS_CREDS_COMM, &creds);
+ r = sd_bus_get_owner_creds(b, SD_BUS_CREDS_UID|SD_BUS_CREDS_PID|SD_BUS_CREDS_CMDLINE|SD_BUS_CREDS_COMM, &creds);
if (r < 0)
return r;
assert_return(service_name_is_valid(name), -EINVAL);
- r = sd_bus_get_owner(bus, name, mask, &c);
+ r = sd_bus_get_name_creds(bus, name, mask, &c);
if (r == -ESRCH || r == -ENXIO)
return sd_bus_error_setf(error, SD_BUS_ERROR_NAME_HAS_NO_OWNER, "Name %s is currently not owned by anyone.", name);
if (r < 0)
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.DBus", "GetConnectionSELinuxSecurityContext")) {
_cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
+ _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
- r = get_creds_by_message(a, m, SD_BUS_CREDS_SELINUX_CONTEXT, &creds, NULL);
+ r = get_creds_by_message(a, m, SD_BUS_CREDS_SELINUX_CONTEXT, &creds, &error);
if (r < 0)
- return synthetic_reply_method_errno(m, r, NULL);
+ return synthetic_reply_method_errno(m, r, &error);
return synthetic_reply_method_return(m, "y", creds->label, strlen(creds->label));
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.DBus", "GetConnectionUnixProcessID")) {
_cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
+ _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
- r = get_creds_by_message(a, m, SD_BUS_CREDS_PID, &creds, NULL);
+ r = get_creds_by_message(a, m, SD_BUS_CREDS_PID, &creds, &error);
if (r < 0)
- return synthetic_reply_method_errno(m, r, NULL);
+ return synthetic_reply_method_errno(m, r, &error);
return synthetic_reply_method_return(m, "u", (uint32_t) creds->pid);
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.DBus", "GetConnectionUnixUser")) {
_cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
+ _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
- r = get_creds_by_message(a, m, SD_BUS_CREDS_UID, &creds, NULL);
+ r = get_creds_by_message(a, m, SD_BUS_CREDS_UID, &creds, &error);
if (r < 0)
- return synthetic_reply_method_errno(m, r, NULL);
+ return synthetic_reply_method_errno(m, r, &error);
return synthetic_reply_method_return(m, "u", (uint32_t) creds->uid);
sd_id128_t server_id;
char buf[SD_ID128_STRING_MAX];
- r = sd_bus_get_server_id(a, &server_id);
+ r = sd_bus_get_owner_id(a, &server_id);
if (r < 0)
return synthetic_reply_method_errno(m, r, NULL);
struct kdbus_cmd_name_list cmd = {};
struct kdbus_name_list *name_list;
struct kdbus_cmd_free cmd_free;
- struct kdbus_cmd_name *name;
+ struct kdbus_name_info *name;
_cleanup_strv_free_ char **owners = NULL;
+ _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
char *arg0;
int err = 0;
if (!service_name_is_valid(arg0))
return synthetic_reply_method_errno(m, -EINVAL, NULL);
+ r = sd_bus_get_name_creds(a, arg0, 0, NULL);
+ if (r == -ESRCH || r == -ENXIO) {
+ sd_bus_error_setf(&error, SD_BUS_ERROR_NAME_HAS_NO_OWNER, "Could not get owners of name '%s': no such name.", arg0);
+ return synthetic_reply_method_errno(m, r, &error);
+ }
+ if (r < 0)
+ return synthetic_reply_method_errno(m, r, NULL);
+
cmd.flags = KDBUS_NAME_LIST_QUEUED;
r = ioctl(a->input_fd, KDBUS_CMD_NAME_LIST, &cmd);
if (r < 0)
char *n;
KDBUS_ITEM_FOREACH(item, name, items)
- if (item->type == KDBUS_ITEM_NAME)
- entry_name = item->str;
+ if (item->type == KDBUS_ITEM_OWNED_NAME)
+ entry_name = item->name.name;
if (!streq_ptr(entry_name, arg0))
continue;
if (streq(name, "org.freedesktop.DBus"))
return synthetic_reply_method_return(m, "b", true);
- r = sd_bus_get_owner(a, name, 0, NULL);
+ r = sd_bus_get_name_creds(a, name, 0, NULL);
if (r < 0 && r != -ESRCH && r != -ENXIO)
return synthetic_reply_method_errno(m, r, NULL);
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.DBus", "RequestName")) {
const char *name;
- uint32_t flags;
+ uint32_t flags, param;
r = sd_bus_message_read(m, "su", &name, &flags);
if (r < 0)
if ((flags & ~(BUS_NAME_ALLOW_REPLACEMENT|BUS_NAME_REPLACE_EXISTING|BUS_NAME_DO_NOT_QUEUE)) != 0)
return synthetic_reply_method_errno(m, -EINVAL, NULL);
- r = sd_bus_request_name(a, name, flags);
+ param = 0;
+ if (flags & BUS_NAME_ALLOW_REPLACEMENT)
+ param |= SD_BUS_NAME_ALLOW_REPLACEMENT;
+ if (flags & BUS_NAME_REPLACE_EXISTING)
+ param |= SD_BUS_NAME_REPLACE_EXISTING;
+ if (!(flags & BUS_NAME_DO_NOT_QUEUE))
+ param |= SD_BUS_NAME_QUEUE;
+
+ r = sd_bus_request_name(a, name, param);
if (r < 0) {
if (r == -EEXIST)
return synthetic_reply_method_return(m, "u", BUS_NAME_EXISTS);
if (flags != 0)
return synthetic_reply_method_errno(m, -EINVAL, NULL);
- r = sd_bus_get_owner(a, name, 0, NULL);
+ r = sd_bus_get_name_creds(a, name, 0, NULL);
if (r >= 0 || streq(name, "org.freedesktop.DBus"))
return synthetic_reply_method_return(m, "u", BUS_START_REPLY_ALREADY_RUNNING);
if (r != -ESRCH)
sd_is_socket(out_fd, AF_UNIX, 0, 0) > 0;
if (is_unix) {
- r = getpeercred(in_fd, &ucred);
- if (r < 0) {
- log_error("Failed to get peer creds: %s", strerror(-r));
- goto finish;
- }
-
+ (void) getpeercred(in_fd, &ucred);
(void) getpeersec(in_fd, &peersec);
}
goto finish;
}
- r = sd_bus_set_name(a, "sd-proxy");
+ r = sd_bus_set_description(a, "sd-proxy");
if (r < 0) {
log_error("Failed to set bus name: %s", strerror(-r));
goto finish;
goto finish;
}
- r = sd_bus_get_server_id(a, &server_id);
+ r = sd_bus_get_owner_id(a, &server_id);
if (r < 0) {
log_error("Failed to get server ID: %s", strerror(-r));
goto finish;