[systemd-commits] src/libsystemd-bus

Lennart Poettering lennart at kemper.freedesktop.org
Tue May 14 13:53:30 PDT 2013


 src/libsystemd-bus/bus-kernel.c  |   13 +++++--------
 src/libsystemd-bus/bus-message.c |    3 +++
 2 files changed, 8 insertions(+), 8 deletions(-)

New commits:
commit 9b05bc48662051314b47b18a3ef8b43b193f2367
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue May 14 22:52:58 2013 +0200

    bus: fix allocation of body parts from memfd

diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c
index b11df30..5b1769c 100644
--- a/src/libsystemd-bus/bus-kernel.c
+++ b/src/libsystemd-bus/bus-kernel.c
@@ -441,7 +441,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess
                                 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++;
@@ -476,9 +476,6 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess
         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;
@@ -553,7 +550,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess
                         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;
         }
@@ -685,10 +682,10 @@ int bus_kernel_pop_memfd(sd_bus *bus, void **address, size_t *size) {
                 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;
diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c
index 7444a30..e0fb1f4 100644
--- a/src/libsystemd-bus/bus-message.c
+++ b/src/libsystemd-bus/bus-message.c
@@ -433,6 +433,9 @@ static sd_bus_message *message_new(sd_bus *bus, uint8_t type) {
         m->header->version = bus ? bus->message_version : 1;
         m->allow_fds = !bus || bus->can_fds || (bus->state != BUS_HELLO && bus->state != BUS_RUNNING);
 
+        if (bus)
+                m->bus = sd_bus_ref(bus);
+
         return m;
 }
 



More information about the systemd-commits mailing list