X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fbus-kernel.c;h=ff687ac489e115205f724778bf6eed9935bfec3d;hb=4e6db59202ad2dbbef56a69985643390ffdd57bd;hp=2b3f46a64ba18c968f7e6b8388c5be7804db0205;hpb=1b9abbf0d834bbd61bde1d97eaf7d59776144077;p=elogind.git diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 2b3f46a64..ff687ac48 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -109,7 +109,7 @@ static int bus_message_setup_kmsg(sd_bus_message *m) { sz += ALIGN8(offsetof(struct kdbus_msg, data) + dl + 1); } - m->kdbus = malloc0(sz); + m->kdbus = aligned_alloc(8, sz); if (!m->kdbus) return -ENOMEM; @@ -355,10 +355,11 @@ int bus_kernel_read_message(sd_bus *bus, sd_bus_message **m) { for (;;) { void *q; - q = realloc(bus->rbuffer, sz); + q = aligned_alloc(8, sz); if (!q) return -errno; + free(bus->rbuffer); k = bus->rbuffer = q; k->size = sz; @@ -408,7 +409,7 @@ int bus_kernel_create(const char *name, char **s) { fname = alloca(offsetof(struct kdbus_cmd_fname, name) + DECIMAL_STR_MAX(uid_t) + 1 + l + 1); sprintf(fname->name, "%lu-%s", (unsigned long) getuid(), name); fname->size = offsetof(struct kdbus_cmd_fname, name) + strlen(fname->name) + 1; - fname->kernel_flags = KDBUS_CMD_FNAME_ACCESS_WORLD | KDBUS_CMD_FNAME_POLICY_NONE; + fname->kernel_flags = KDBUS_CMD_FNAME_ACCESS_WORLD | KDBUS_CMD_FNAME_POLICY_OPEN; fname->user_flags = 0; p = strjoin("/dev/kdbus/", fname->name, "/bus", NULL);