#include "util.h"
#include "strv.h"
+#include "memfd-util.h"
#include "bus-internal.h"
#include "bus-message.h"
break;
case KDBUS_ITEM_CAPS:
- m->creds.capability = d->data;
- m->creds.capability_size = l;
+ m->creds.capability = (uint8_t *) d->caps.caps;
+ m->creds.capability_size = d->size - offsetof(struct kdbus_item, caps.caps);
m->creds.mask |= (SD_BUS_CREDS_EFFECTIVE_CAPS|SD_BUS_CREDS_PERMITTED_CAPS|SD_BUS_CREDS_INHERITABLE_CAPS|SD_BUS_CREDS_BOUNDING_CAPS) & bus->creds_mask;
break;
destination = d->str;
break;
- case KDBUS_ITEM_NAME:
+ case KDBUS_ITEM_OWNED_NAME:
if (!service_name_is_valid(d->name.name))
return -EBADMSG;
goto fail;
break;
- case KDBUS_ITEM_CONN_NAME:
- m->creds.conn_name = d->str;
- m->creds.mask |= SD_BUS_CREDS_CONNECTION_NAME & bus->creds_mask;
+ case KDBUS_ITEM_CONN_DESCRIPTION:
+ m->creds.description = d->str;
+ m->creds.mask |= SD_BUS_CREDS_DESCRIPTION & bus->creds_mask;
break;
case KDBUS_ITEM_FDS:
b->use_memfd = 1;
- if (b->connection_name) {
- g = bus_label_escape(b->connection_name);
+ if (b->description) {
+ g = bus_label_escape(b->description);
if (!g)
return -ENOMEM;
name = g;
}
- b->connection_name = bus_label_unescape(name);
- if (!b->connection_name)
+ b->description = bus_label_unescape(name);
+ if (!b->description)
return -ENOMEM;
}
item = hello->items;
item->size = offsetof(struct kdbus_item, str) + m + 1;
- item->type = KDBUS_ITEM_CONN_NAME;
+ item->type = KDBUS_ITEM_CONN_DESCRIPTION;
memcpy(item->str, name, m + 1);
item = KDBUS_ITEM_NEXT(item);
assert_se(pthread_mutex_lock(&bus->memfd_cache_mutex) >= 0);
if (bus->n_memfd_cache <= 0) {
- _cleanup_free_ char *g = NULL;
int r;
assert_se(pthread_mutex_unlock(&bus->memfd_cache_mutex) >= 0);
- assert(bus->connection_name);
-
- g = bus_label_escape(bus->connection_name);
- if (!g)
- return -ENOMEM;
-
- r = memfd_create(g, MFD_ALLOW_SEALING);
+ r = memfd_new(bus->description);
if (r < 0)
- return -errno;
+ return r;
*address = NULL;
*mapped = 0;
/* If overly long, let's return a bit to the OS */
if (mapped > max_mapped) {
- assert_se(ftruncate(fd, max_mapped) >= 0);
+ assert_se(memfd_set_size(fd, max_mapped) >= 0);
assert_se(munmap((uint8_t*) address + max_mapped, PAGE_ALIGN(mapped - max_mapped)) >= 0);
c->mapped = c->allocated = max_mapped;
} else {
if (mask & SD_BUS_CREDS_WELL_KNOWN_NAMES)
m |= KDBUS_ATTACH_NAMES;
- if (mask & SD_BUS_CREDS_CONNECTION_NAME)
- m |= KDBUS_ATTACH_CONN_NAME;
+ if (mask & SD_BUS_CREDS_DESCRIPTION)
+ m |= KDBUS_ATTACH_CONN_DESCRIPTION;
*kdbus_mask = m;
return 0;