From 24ffe79c80d376b058c2d154b2b5f0ef8fee1c36 Mon Sep 17 00:00:00 2001 From: Olivier Andrieu Date: Fri, 12 Mar 2004 14:18:35 +0000 Subject: 2004-03-12 Olivier Andrieu * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos): fix a bug with CUSTOM types. * dbus/dbus-message.c (message_iter_test, _dbus_message_test): add a unit test for this bug (used to fail). --- ChangeLog | 8 ++++++++ dbus/dbus-marshal.c | 2 +- dbus/dbus-message.c | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e3317afc..b74774ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-03-12 Olivier Andrieu + + * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos): + fix a bug with CUSTOM types. + + * dbus/dbus-message.c (message_iter_test, _dbus_message_test): add + a unit test for this bug (used to fail). + 2004-03-12 Mikael Hallendal * bus/activation.c: diff --git a/dbus/dbus-marshal.c b/dbus/dbus-marshal.c index 9f92f91b..e19e36bb 100644 --- a/dbus/dbus-marshal.c +++ b/dbus/dbus-marshal.c @@ -1649,7 +1649,7 @@ _dbus_marshal_get_arg_end_pos (const DBusString *str, /* Demarshal the string length */ len = _dbus_demarshal_uint32 (str, byte_order, pos, &pos); - *end_pos = pos + len + 1; + pos += len + 1; /* Demarshal the data length */ len = _dbus_demarshal_uint32 (str, byte_order, pos, &pos); diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c index 1c7ebf24..ffaef43c 100644 --- a/dbus/dbus-message.c +++ b/dbus/dbus-message.c @@ -6003,6 +6003,12 @@ message_iter_test (DBusMessage *message) dbus_free (str); dbus_free (data); + if (!dbus_message_iter_next (&iter)) + _dbus_assert_not_reached ("Reached end of arguments"); + + if (dbus_message_iter_get_byte (&iter) != 0xF0) + _dbus_assert_not_reached ("wrong value after custom"); + if (dbus_message_iter_next (&iter)) _dbus_assert_not_reached ("Didn't reach end of arguments"); } @@ -7140,6 +7146,8 @@ _dbus_message_test (const char *test_data_dir) dbus_message_iter_append_custom (&iter, "MyTypeName", "data", 5); + dbus_message_iter_append_byte (&iter, 0xF0); + message_iter_test (message); /* Message loader test */ -- cgit