X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fbus-control.c;h=47e91118a43905db6c36a869dbbc4dde35190e49;hb=9a636ed8096fa44927f182ac3eaef4104866d4a9;hp=ff6a5a6cb613d264efb3f0aefaef1e1f9bc7ed0c;hpb=e63bb33d71a524e84206ef94ade3eba441e186c5;p=elogind.git diff --git a/src/libsystemd-bus/bus-control.c b/src/libsystemd-bus/bus-control.c index ff6a5a6cb..47e91118a 100644 --- a/src/libsystemd-bus/bus-control.c +++ b/src/libsystemd-bus/bus-control.c @@ -27,7 +27,6 @@ #include #include "strv.h" - #include "sd-bus.h" #include "bus-internal.h" #include "bus-message.h" @@ -216,7 +215,7 @@ static int kernel_get_list(sd_bus *bus, uint64_t flags, char ***x) { name_list = (struct kdbus_name_list *) ((uint8_t *) bus->kdbus_buffer + cmd.offset); - KDBUS_PART_FOREACH(name, name_list, names) { + KDBUS_ITEM_FOREACH(name, name_list, names) { if (name->size > sizeof(*name)) { r = strv_extend(x, name->name); @@ -363,6 +362,7 @@ static int bus_get_owner_kdbus( cmd = alloca0(size); strcpy(cmd->name, name); } + cmd->flags = KDBUS_ATTACH_NAMES; cmd->size = size; r = ioctl(bus->input_fd, KDBUS_CMD_CONN_INFO, cmd); @@ -382,7 +382,7 @@ static int bus_get_owner_kdbus( c->mask |= SD_BUS_CREDS_UNIQUE_NAME; } - KDBUS_PART_FOREACH(item, conn_info, items) { + KDBUS_ITEM_FOREACH(item, conn_info, items) { switch (item->type) { @@ -438,7 +438,7 @@ static int bus_get_owner_kdbus( case KDBUS_ITEM_CMDLINE: if (mask & SD_BUS_CREDS_CMDLINE) { - c->cmdline_size = item->size - KDBUS_PART_HEADER_SIZE; + c->cmdline_size = item->size - KDBUS_ITEM_HEADER_SIZE; c->cmdline = memdup(item->data, c->cmdline_size); if (!c->cmdline) { r = -ENOMEM; @@ -470,7 +470,7 @@ static int bus_get_owner_kdbus( SD_BUS_CREDS_INHERITABLE_CAPS | SD_BUS_CREDS_BOUNDING_CAPS) & mask; if (m) { - c->capability_size = item->size - KDBUS_PART_HEADER_SIZE; + c->capability_size = item->size - KDBUS_ITEM_HEADER_SIZE; c->capability = memdup(item->data, c->capability_size); if (!c->capability) { r = -ENOMEM; @@ -503,14 +503,11 @@ static int bus_get_owner_kdbus( } break; - case KDBUS_ITEM_NAMES: + case KDBUS_ITEM_NAME: if (mask & SD_BUS_CREDS_WELL_KNOWN_NAMES) { - c->well_known_names_size = item->size - KDBUS_PART_HEADER_SIZE; - c->well_known_names = memdup(item->data, c->well_known_names_size); - if (!c->well_known_names) { - r = -ENOMEM; + r = strv_extend(&c->well_known_names, item->name.name); + if (r < 0) goto fail; - } c->mask |= SD_BUS_CREDS_WELL_KNOWN_NAMES; } @@ -1012,7 +1009,7 @@ static int bus_add_match_internal_kernel( item->type = KDBUS_MATCH_BLOOM; memcpy(item->data64, bloom, BLOOM_SIZE); - item = KDBUS_PART_NEXT(item); + item = KDBUS_ITEM_NEXT(item); } if (sender) {