[systemd-commits] 4 commits - src/libsystemd-bus

Lennart Poettering lennart at kemper.freedesktop.org
Mon Dec 9 18:32:01 PST 2013


 src/libsystemd-bus/bus-message.c       |    9 ++-------
 src/libsystemd-bus/test-bus-gvariant.c |    9 +++++++++
 2 files changed, 11 insertions(+), 7 deletions(-)

New commits:
commit 5877dc5a7fb6f0033b2a3992cc08f335a3c51d63
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Dec 10 03:31:52 2013 +0100

    test: add gvariant test for empty messages

diff --git a/src/libsystemd-bus/test-bus-gvariant.c b/src/libsystemd-bus/test-bus-gvariant.c
index 57015ae..7ceeb81 100644
--- a/src/libsystemd-bus/test-bus-gvariant.c
+++ b/src/libsystemd-bus/test-bus-gvariant.c
@@ -178,6 +178,15 @@ static void test_marshal(void) {
         blob = NULL;
 
         assert_se(bus_message_dump(n, NULL, true) >= 0);
+
+        m = sd_bus_message_unref(m);
+
+        assert_se(sd_bus_message_new_method_call(bus, "a.x", "/a/x", "a.x", "Ax", &m) >= 0);
+
+        assert_se(sd_bus_message_append(m, "as", 0) >= 0);
+
+        assert_se(bus_message_seal(m, 4712) >= 0);
+        assert_se(bus_message_dump(m, NULL, true) >= 0);
 }
 
 int main(int argc, char *argv[]) {

commit 5f7e8903b275f14d0f41f0542871d09deccb1741
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Dec 10 03:30:51 2013 +0100

    bus: properly handle empty messages

diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c
index 4488e7b..9e71271 100644
--- a/src/libsystemd-bus/bus-message.c
+++ b/src/libsystemd-bus/bus-message.c
@@ -3061,7 +3061,7 @@ static int message_peek_body(
         }
 
         part = find_part(m, start, nbytes, (void**) &q);
-        if (!part || !q)
+        if (!part || (nbytes > 0 && !q))
                 return -EBADMSG;
 
         *rindex = end;

commit 224a1ed4c152c394d42b8a6fd78159af400d5df3
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Dec 10 03:04:16 2013 +0100

    bus: empty gvariant arrays should at least get size 1

diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c
index 32af860..4488e7b 100644
--- a/src/libsystemd-bus/bus-message.c
+++ b/src/libsystemd-bus/bus-message.c
@@ -1894,9 +1894,7 @@ _public_ int sd_bus_message_open_container(
 }
 
 static size_t determine_word_size(size_t sz, size_t extra) {
-        if (sz <= 0 && extra == 0)
-                return 0;
-        else if (sz + extra <= 0xFF)
+        if (sz + extra <= 0xFF)
                 return 1;
         else if (sz + extra*2 <= 0xFFFF)
                 return 2;

commit 041b85cf01ac2783d61b22da4eea8503cf8b0d5a
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Dec 10 02:57:46 2013 +0100

    bus: it's OK to send messages with an empty payload but non-empty signature
    
    THis might happen when sending arrays with 0 enttries, hence this is not
    an indication for a problem.

diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c
index f01f8b1..32af860 100644
--- a/src/libsystemd-bus/bus-message.c
+++ b/src/libsystemd-bus/bus-message.c
@@ -5085,9 +5085,6 @@ int bus_message_parse_fields(sd_bus_message *m) {
         if (m->n_fds != unix_fds)
                 return -EBADMSG;
 
-        if (isempty(m->root_container.signature) != (BUS_MESSAGE_BODY_SIZE(m) == 0))
-                return -EBADMSG;
-
         switch (m->header->type) {
 
         case SD_BUS_MESSAGE_SIGNAL:



More information about the systemd-commits mailing list