X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Flibsystemd-bus%2Fbus-kernel.c;h=2c87f22fd7f5e7509d9d27f52055f4e946746e61;hb=65dae17a2f890b12a07dd4901b3db02b1031c463;hp=76a55c7822690144b7aa9d0d4542a18c55916cb7;hpb=e821075a23fdfa3ca7738fc30bb2d4c430fe10c0;p=elogind.git diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 76a55c782..2c87f22fd 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -28,6 +28,7 @@ #include #include "util.h" +#include "strv.h" #include "bus-internal.h" #include "bus-message.h" @@ -248,8 +249,8 @@ static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) { memset(m->kdbus, 0, sz); m->kdbus->flags = - ((m->header->flags & SD_BUS_MESSAGE_NO_REPLY_EXPECTED) ? 0 : KDBUS_MSG_FLAGS_EXPECT_REPLY) | - ((m->header->flags & SD_BUS_MESSAGE_NO_AUTO_START) ? KDBUS_MSG_FLAGS_NO_AUTO_START : 0); + ((m->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED) ? 0 : KDBUS_MSG_FLAGS_EXPECT_REPLY) | + ((m->header->flags & BUS_MESSAGE_NO_AUTO_START) ? KDBUS_MSG_FLAGS_NO_AUTO_START : 0); m->kdbus->dst_id = well_known ? 0 : m->destination ? unique : KDBUS_DST_ID_BROADCAST; @@ -800,9 +801,10 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) { destination = d->str; break; - case KDBUS_ITEM_NAMES: - m->creds.well_known_names = d->str; - m->creds.well_known_names_size = l; + case KDBUS_ITEM_NAME: + r = strv_extend(&m->creds.well_known_names, d->name.name); + if (r < 0) + goto fail; m->creds.mask |= SD_BUS_CREDS_WELL_KNOWN_NAMES & bus->creds_mask; break; @@ -830,7 +832,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) { if (!m->destination) { if (destination) m->destination = destination; - else if (k->dst_id != KDBUS_DST_ID_WELL_KNOWN_NAME && + else if (k->dst_id != KDBUS_DST_ID_NAME && k->dst_id != KDBUS_DST_ID_BROADCAST) { snprintf(m->destination_buffer, sizeof(m->destination_buffer), ":1.%llu", (unsigned long long) k->dst_id); m->destination = m->destination_buffer;