On Thu, 07.11.13 13:48, Marc-Antoine Perennou (marc-anto...@perennou.com) wrote:
Applied a similar patch that just makes use of *array_size to detect if we are looking at an empty array. Also added a test case for this! Thanks! > --- > src/libsystemd-bus/bus-message.c | 21 +++++++++++++-------- > 1 file changed, 13 insertions(+), 8 deletions(-) > > diff --git a/src/libsystemd-bus/bus-message.c > b/src/libsystemd-bus/bus-message.c > index 9543ae3..0fd9aa1 100644 > --- a/src/libsystemd-bus/bus-message.c > +++ b/src/libsystemd-bus/bus-message.c > @@ -3567,15 +3567,20 @@ _public_ int sd_bus_message_read_array(sd_bus_message > *m, > if (r <= 0) > return r; > > - c = message_get_container(m); > - sz = BUS_MESSAGE_BSWAP32(m, *c->array_size); > + if (message_end_of_array(m, m->rindex)) { > + p = NULL; > + sz = 0; > + } else { > + c = message_get_container(m); > + sz = BUS_MESSAGE_BSWAP32(m, *c->array_size); > > - r = message_peek_body(m, &m->rindex, align, sz, &p); > - if (r < 0) > - goto fail; > - if (r == 0) { > - r = -EBADMSG; > - goto fail; > + r = message_peek_body(m, &m->rindex, align, sz, &p); > + if (r < 0) > + goto fail; > + if (r == 0) { > + r = -EBADMSG; > + goto fail; > + } > } > > r = sd_bus_message_exit_container(m); Lennart -- Lennart Poettering, Red Hat _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel