chiark / gitweb /
bus: if we hit the end of an array container return 0 as EOF indicator when reading it
authorLennart Poettering <lennart@poettering.net>
Fri, 18 Oct 2013 12:06:56 +0000 (14:06 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 18 Oct 2013 12:07:44 +0000 (14:07 +0200)
src/libsystemd-bus/bus-message.c

index bb339f5a8287f3ff8deee24d7d6d0543735f5ae6..511bdf503e78852430eccba3c49e8a0b8eebbfc2 100644 (file)
@@ -2659,6 +2659,9 @@ int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) {
         if (!c->signature || c->signature[c->index] == 0)
                 return 0;
 
         if (!c->signature || c->signature[c->index] == 0)
                 return 0;
 
+        if (message_end_of_array(m, m->rindex))
+                return 0;
+
         if (c->signature[c->index] != type)
                 return -ENXIO;
 
         if (c->signature[c->index] != type)
                 return -ENXIO;
 
@@ -3007,6 +3010,9 @@ int sd_bus_message_enter_container(sd_bus_message *m, char type, const char *con
         if (!c->signature || c->signature[c->index] == 0)
                 return 0;
 
         if (!c->signature || c->signature[c->index] == 0)
                 return 0;
 
+        if (message_end_of_array(m, m->rindex))
+                return 0;
+
         signature = strdup(contents);
         if (!signature)
                 return -ENOMEM;
         signature = strdup(contents);
         if (!signature)
                 return -ENOMEM;