diff options
| -rw-r--r-- | ChangeLog | 8 | ||||
| -rw-r--r-- | dbus/dbus-marshal.c | 2 | ||||
| -rw-r--r-- | dbus/dbus-message.c | 8 | 
3 files changed, 17 insertions, 1 deletions
@@ -1,3 +1,11 @@ +2004-03-12  Olivier Andrieu  <oliv__a@users.sourceforge.net> + +	* 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  <micke@imendio.com>  	* 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 */  | 
