conn_info = (struct kdbus_conn_info *) ((uint8_t *) bus->kdbus_buffer + cmd->offset);
+ /* Non-activated names are considered not available */
+ if (conn_info->flags & KDBUS_HELLO_ACTIVATOR)
+ return name[0] == ':' ? -ENXIO : -ENOENT;
+
c = bus_creds_new();
if (!c)
return -ENOMEM;
assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN);
assert_return(!bus_pid_changed(bus), -ECHILD);
assert_return(service_name_is_valid(name), -EINVAL);
+ assert_return(bus->bus_client, -ENODATA);
if (bus->is_kernel)
return bus_get_owner_kdbus(bus, name, mask, creds);
item->name_change.new.id = new_owner_id;
if (name)
- strcpy(item->name_change.name, name);
+ memcpy(item->name_change.name, name, l);
/* If the old name is unset or empty, then
* this can match against added names */
m->cookie = cookie;
item = m->items;
- item->size = offsetof(struct kdbus_item, id_change) + sizeof(struct kdbus_notify_id_change);
+ item->size =
+ offsetof(struct kdbus_item, id_change) +
+ sizeof(struct kdbus_notify_id_change);
item->id_change.id = name_id;
/* If the old name is unset or empty, then this can