1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-10-27 10:25:06 +03:00

bus: fix assert when serializing fixed size struct to gvariant

This commit is contained in:
Lennart Poettering 2013-12-23 23:48:30 +01:00
parent 85feb8e4d9
commit 8f19720dd2
2 changed files with 6 additions and 4 deletions

View File

@ -2055,7 +2055,7 @@ static int bus_message_close_struct(sd_bus_message *m, struct bus_container *c,
return r; return r;
} }
assert(i <= c->n_offsets); assert(!c->need_offsets || i <= c->n_offsets);
/* We need to add an offset for each item that has a /* We need to add an offset for each item that has a
* variable size and that is not the last one in the * variable size and that is not the last one in the
@ -2067,7 +2067,8 @@ static int bus_message_close_struct(sd_bus_message *m, struct bus_container *c,
p += n; p += n;
} }
assert(i == c->n_offsets); assert(!c->need_offsets || i == c->n_offsets);
assert(c->need_offsets || n_variable == 0);
if (n_variable <= 0) { if (n_variable <= 0) {
a = message_extend_body(m, 1, 0, add_offset); a = message_extend_body(m, 1, 0, add_offset);

View File

@ -141,9 +141,10 @@ static void test_marshal(void) {
assert_se(sd_bus_message_new_method_call(bus, "a.service.name", "/an/object/path/which/is/really/really/long/so/that/we/hit/the/eight/bit/boundary/by/quite/some/margin/to/test/this/stuff/that/it/really/works", "an.interface.name", "AMethodName", &m) >= 0); assert_se(sd_bus_message_new_method_call(bus, "a.service.name", "/an/object/path/which/is/really/really/long/so/that/we/hit/the/eight/bit/boundary/by/quite/some/margin/to/test/this/stuff/that/it/really/works", "an.interface.name", "AMethodName", &m) >= 0);
assert_se(sd_bus_message_append(m, assert_se(sd_bus_message_append(m,
"a(usv)", 2, "a(usv)", 3,
4711, "first-string-parameter", "(st)", "X", (uint64_t) 1111, 4711, "first-string-parameter", "(st)", "X", (uint64_t) 1111,
4712, "second-string-parameter", "(a(si))", 2, "Y", 5, "Z", 6) >= 0); 4712, "second-string-parameter", "(a(si))", 2, "Y", 5, "Z", 6,
4713, "third-string-parameter", "(uu)", 1, 2) >= 0);
assert_se(bus_message_seal(m, 4711, 0) >= 0); assert_se(bus_message_seal(m, 4711, 0) >= 0);