X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fbus-message.c;h=511bdf503e78852430eccba3c49e8a0b8eebbfc2;hp=bb339f5a8287f3ff8deee24d7d6d0543735f5ae6;hb=1daf8121524246932b18be8dd7d63e792dee5de2;hpb=89456fcee469882bad8566aa0947c7aadadfde91 diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index bb339f5a8..511bdf503 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -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 (message_end_of_array(m, m->rindex)) + return 0; + 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 (message_end_of_array(m, m->rindex)) + return 0; + signature = strdup(contents); if (!signature) return -ENOMEM;