From 5935f33b75ee7830d5521317e1686ec767bce502 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 16 Jun 2005 04:27:45 +0000 Subject: 2005-06-16 Colin Walters * dbus/dbus-marshal-header.c (_dbus_header_load): Set header byte order from expected byte order (Patch from Chris Wilson, #3475). * dbus/dbus-marshal-byteswap.c (byteswap_body_helper): Increment pointer after swapping fixed array. Add assertion for array length. --- ChangeLog | 9 +++++++++ dbus/dbus-marshal-byteswap.c | 7 +++++-- dbus/dbus-marshal-header.c | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6e6d639a..909f6f0c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-06-16 Colin Walters + + * dbus/dbus-marshal-header.c (_dbus_header_load): Set + header byte order from expected byte order (Patch from Chris Wilson, #3475). + + * dbus/dbus-marshal-byteswap.c (byteswap_body_helper): + Increment pointer after swapping fixed array. Add assertion + for array length. + 2005-06-15 Colin Walters * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): diff --git a/dbus/dbus-marshal-byteswap.c b/dbus/dbus-marshal-byteswap.c index 7571e2fc..80cc1ce8 100644 --- a/dbus/dbus-marshal-byteswap.c +++ b/dbus/dbus-marshal-byteswap.c @@ -90,7 +90,7 @@ byteswap_body_helper (DBusTypeReader *reader, p = _DBUS_ALIGN_ADDRESS (p, 4); array_len = _dbus_unpack_uint32 (old_byte_order, p); - + *((dbus_uint32_t*)p) = DBUS_UINT32_SWAP_LE_BE (*((dbus_uint32_t*)p)); p += 4; @@ -102,12 +102,15 @@ byteswap_body_helper (DBusTypeReader *reader, elem_type = _dbus_type_reader_get_element_type (reader); alignment = _dbus_type_get_alignment (elem_type); + _dbus_assert ((array_len / alignment) < DBUS_MAXIMUM_ARRAY_LENGTH); + p = _DBUS_ALIGN_ADDRESS (p, alignment); if (dbus_type_is_fixed (elem_type)) { if (alignment > 1) - _dbus_swap_array (p, array_len / alignment, alignment); + _dbus_swap_array (p, array_len / alignment, alignment); + p += array_len; } else { diff --git a/dbus/dbus-marshal-header.c b/dbus/dbus-marshal-header.c index 83fbd3bf..3297278a 100644 --- a/dbus/dbus-marshal-header.c +++ b/dbus/dbus-marshal-header.c @@ -1040,6 +1040,7 @@ _dbus_header_load (DBusHeader *header, _dbus_type_reader_next (&reader); _dbus_assert (v_byte == byte_order); + header->byte_order = byte_order; /* MESSAGE TYPE */ _dbus_assert (_dbus_type_reader_get_current_type (&reader) == DBUS_TYPE_BYTE); -- cgit