#define KDBUS_ITEM_HEADER_SIZE offsetof(struct kdbus_item, data)
#define KDBUS_ITEM_SIZE(s) ALIGN8((s) + KDBUS_ITEM_HEADER_SIZE)
-#define KDBUS_BUFFER_SIZE (4*1024*1024)
+#define KDBUS_POOL_SIZE (4*1024*1024)
static int parse_unique_name(const char *s, uint64_t *id) {
int r;
(*d)->size = offsetof(struct kdbus_item, vec) + sizeof(struct kdbus_vec);
(*d)->type = KDBUS_MSG_PAYLOAD_VEC;
- (*d)->vec.address = (intptr_t) p;
+ (*d)->vec.address = (uint64_t) p;
(*d)->vec.size = sz;
*d = (struct kdbus_item *) ((uint8_t*) *d + (*d)->size);
return -EINVAL;
if (!b->kdbus_buffer) {
- b->kdbus_buffer = mmap(NULL, KDBUS_BUFFER_SIZE, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
+ b->kdbus_buffer = mmap(NULL, KDBUS_POOL_SIZE, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
if (b->kdbus_buffer == MAP_FAILED) {
b->kdbus_buffer = NULL;
return -errno;
KDBUS_HELLO_ATTACH_SECLABEL|
KDBUS_HELLO_ATTACH_AUDIT;
- hello->items[0].type = KDBUS_HELLO_BUFFER;
+ hello->items[0].type = KDBUS_HELLO_POOL;
hello->items[0].size = KDBUS_ITEM_HEADER_SIZE + sizeof(struct kdbus_vec);
hello->items[0].vec.address = (uint64_t) b->kdbus_buffer;
- hello->items[0].vec.size = KDBUS_BUFFER_SIZE;
+ hello->items[0].vec.size = KDBUS_POOL_SIZE;
r = ioctl(b->input_fd, KDBUS_CMD_HELLO, hello);
if (r < 0)
if (d->vec.size < sizeof(struct bus_header))
return -EBADMSG;
- h = (struct bus_header*) d->vec.address;
+ h = (struct bus_header*)UINT64_TO_PTR(d->vec.address);
}
n_payload++;
if (n_bytes != total)
return -EBADMSG;
- if (n_payload > 2)
- 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)
if (d->type == KDBUS_MSG_PAYLOAD_VEC) {
- range_contains(idx, d->vec.size, ALIGN8(sizeof(struct bus_header)), BUS_MESSAGE_FIELDS_SIZE(m), (void*) d->vec.address, &m->fields);
- range_contains(idx, d->vec.size, ALIGN8(sizeof(struct bus_header)) + ALIGN8(BUS_MESSAGE_FIELDS_SIZE(m)), BUS_MESSAGE_BODY_SIZE(m), (void*) d->vec.address, &m->body);
+ range_contains(idx, d->vec.size, ALIGN8(sizeof(struct bus_header)), BUS_MESSAGE_FIELDS_SIZE(m),
+ UINT64_TO_PTR(d->vec.address), &m->fields);
+ range_contains(idx, d->vec.size, ALIGN8(sizeof(struct bus_header)) + ALIGN8(BUS_MESSAGE_FIELDS_SIZE(m)),
+ BUS_MESSAGE_BODY_SIZE(m), UINT64_TO_PTR(d->vec.address), &m->body);
idx += d->vec.size;
n->size = KDBUS_ITEM_HEADER_SIZE + strlen(n->str) + 1;
make->size = offsetof(struct kdbus_cmd_bus_make, items) + cg->size + n->size;
- make->flags = KDBUS_MAKE_ACCESS_WORLD | KDBUS_MAKE_POLICY_OPEN;
+ make->flags = KDBUS_MAKE_POLICY_OPEN;
make->bus_flags = 0;
make->bloom_size = BLOOM_SIZE;
assert_cc(BLOOM_SIZE % 8 == 0);