}
static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) {
+ struct bus_body_part *part;
struct kdbus_item *d;
bool well_known;
uint64_t unique;
size_t sz, dl;
+ unsigned i;
int r;
- struct bus_body_part *part;
assert(b);
assert(m);
if (m->fields)
append_payload_vec(&d, m->fields, ALIGN8(m->header->fields_size));
- for (part = &m->body; part && part->size > 0; part = part->next)
+ MESSAGE_FOREACH_PART(part, i, m)
append_payload_vec(&d, part->data, part->size);
if (m->kdbus->dst_id == KDBUS_DST_ID_BROADCAST) {
if (d->vec.size < sizeof(struct bus_header))
return -EBADMSG;
- h = (struct bus_header*)UINT64_TO_PTR(d->vec.address);
+ h = UINT64_TO_PTR(d->vec.address);
}
n_payload++;
if (n_bytes != total)
return -EBADMSG;
- //if (n_payload > 2)
- // return -EBADMSG;
-
r = bus_message_from_header(h, sizeof(struct bus_header), fds, n_fds, NULL, seclabel, 0, &m);
if (r < 0)
return r;
log_debug("Got unknown field from kernel %llu", d->type);
}
- if ((BUS_MESSAGE_FIELDS_SIZE(m) > 0 && !m->fields) || BUS_MESSAGE_SIZE(m) != idx) {
+ if ((BUS_MESSAGE_FIELDS_SIZE(m) > 0 && !m->fields)) {
sd_bus_message_unref(m);
return -EBADMSG;
}
return -ENOTSUP;
if (bus->n_memfd_cache <= 0) {
- int fd;
+ int fd, r;
- fd = ioctl(bus->input_fd, KDBUS_CMD_MEMFD_NEW, &fd);
- if (fd < 0)
+ r = ioctl(bus->input_fd, KDBUS_CMD_MEMFD_NEW, &fd);
+ if (r < 0)
return -errno;
*address = NULL;