assert(rindex);
assert(align > 0);
- if (message_end_of_array(m, *rindex))
- return 0;
-
start = ALIGN_TO((size_t) *rindex, align);
padding = start - *rindex;
end = start + nbytes;
if (ret)
*ret = q;
- return 1;
+ return 0;
}
static bool validate_nul(const char *s, size_t l) {
bool ok;
r = message_peek_body(m, &rindex, 1, c->item_size, &q);
- if (r <= 0)
+ if (r < 0)
return r;
if (type == SD_BUS_TYPE_STRING)
assert(align > 0);
r = message_peek_body(m, &rindex, align, c->item_size, &q);
- if (r <= 0)
+ if (r < 0)
return r;
switch (type) {
bool ok;
r = message_peek_body(m, &rindex, 4, 4, &q);
- if (r <= 0)
+ if (r < 0)
return r;
l = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q);
r = message_peek_body(m, &rindex, 1, l+1, &q);
if (r < 0)
return r;
- if (r == 0)
- return -EBADMSG;
if (type == SD_BUS_TYPE_OBJECT_PATH)
ok = validate_object_path(q, l);
uint8_t l;
r = message_peek_body(m, &rindex, 1, 1, &q);
- if (r <= 0)
+ if (r < 0)
return r;
l = *(uint8_t*) q;
r = message_peek_body(m, &rindex, 1, l+1, &q);
if (r < 0)
return r;
- if (r == 0)
- return -EBADMSG;
if (!validate_signature(q, l))
return -EBADMSG;
assert(sz > 0);
r = message_peek_body(m, &rindex, align, sz, &q);
- if (r <= 0)
+ if (r < 0)
return r;
switch (type) {
/* dbus1 */
r = message_peek_body(m, &rindex, 4, 4, &q);
- if (r <= 0)
+ if (r < 0)
return r;
if (BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q) > BUS_ARRAY_MAX_SIZE)
r = message_peek_body(m, &rindex, alignment, 0, NULL);
if (r < 0)
return r;
- if (r == 0)
- return -EBADMSG;
*array_size = (uint32_t*) q;
r = message_peek_body(m, &where, 1, sz, &q);
if (r < 0)
return r;
- if (r == 0)
- return -EBADMSG;
framing = read_word_le(q, sz);
if (framing > c->item_size - sz)
r = message_peek_body(m, &where, 1, *n_offsets * sz, &q);
if (r < 0)
return r;
- if (r == 0)
- return -EBADMSG;
*offsets = new(size_t, *n_offsets);
if (!*offsets)
r = message_peek_body(m, &where, 1, 1+k, &q);
if (r < 0)
return r;
- if (r == 0)
- return -EBADMSG;
if (*(char*) q != 0)
return -EBADMSG;
r = message_peek_body(m, &rindex, 1, 1, &q);
if (r < 0)
return r;
- if (r == 0)
- return -EBADMSG;
l = *(uint8_t*) q;
r = message_peek_body(m, &rindex, 1, l+1, &q);
if (r < 0)
return r;
- if (r == 0)
- return -EBADMSG;
if (!validate_signature(q, l))
return -EBADMSG;
r = message_peek_body(m, &where, 1, n_variable * sz, &q);
if (r < 0)
return r;
- if (r == 0)
- return -EBADMSG;
v = n_variable;
/* dbus1 */
r = message_peek_body(m, &m->rindex, 8, 0, NULL);
- if (r <= 0)
+ if (r < 0)
return r;
} else if (c->item_size <= 0) {
/* Allow entering into anonymous containers */
r = sd_bus_message_peek_type(m, &tt, &cc);
- if (r <= 0)
+ if (r < 0)
return r;
if (type != 0 && type != tt)
r = message_peek_body(m, &where, 1, k, &q);
if (r < 0)
return r;
- if (r == 0)
- goto eof;
if (*(char*) q == 0)
break;
r = message_peek_body(m, &rindex, 1, 1, &q);
if (r < 0)
return r;
- if (r == 0)
- goto eof;
l = *(uint8_t*) q;
r = message_peek_body(m, &rindex, 1, l+1, &q);
if (r < 0)
return r;
- if (r == 0)
- return -EBADMSG;
if (!validate_signature(q, l))
return -EBADMSG;
if (align < 0)
return align;
- sz = c->item_size;
+ sz = c->end - c->begin;
} else {
align = bus_type_get_alignment(type);
if (align < 0)
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);