X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fbus-message.c;h=773a670119a42bcdda620ac05449e57fefc561f4;hb=80cfe9e163b1c92f917e0a5e053b148fca790677;hp=85b9cbaae01ec1e8a49e2ef9f7d4a8e958de629f;hpb=392d5b378ceae5e1fd7c91ca545fcf4cd105744a;p=elogind.git diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index 85b9cbaae..773a67011 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -302,6 +302,7 @@ int bus_message_from_malloc( m->n_iovec = 1; m->iovec[0].iov_base = buffer; m->iovec[0].iov_len = length; + m->size = length; r = message_parse_fields(m); if (r < 0) @@ -784,7 +785,7 @@ static void *message_extend_body(sd_bus_message *m, size_t align, size_t sz) { int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored) { struct bus_container *c; - size_t sz, align; + ssize_t align, sz; uint32_t k; void *a; char *e = NULL; @@ -1590,10 +1591,12 @@ int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) { } default: { - size_t sz, align, rindex; + ssize_t sz, align; + size_t rindex; align = bus_type_get_alignment(type); sz = bus_type_get_size(type); + assert(align > 0 && sz > 0); rindex = m->rindex; r = message_peek_body(m, &rindex, align, sz, &q); @@ -2392,10 +2395,11 @@ static int message_skip_fields( (*signature)++; } else if (bus_type_is_basic(t)) { - size_t align, k; + ssize_t align, k; align = bus_type_get_alignment(t); k = bus_type_get_size(t); + assert(align > 0 && k > 0); r = message_peek_fields(m, ri, align, k, NULL); if (r < 0)