]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
2005-06-16 Colin Walters <walters@verbum.org>
authorColin Walters <walters@verbum.org>
Thu, 16 Jun 2005 04:27:45 +0000 (04:27 +0000)
committerColin Walters <walters@verbum.org>
Thu, 16 Jun 2005 04:27:45 +0000 (04:27 +0000)
* 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
dbus/dbus-marshal-byteswap.c
dbus/dbus-marshal-header.c

index 6e6d639a1a715d0bf164fd497b781d4ad2e4819d..909f6f0cf6730ca57dd6fe079351b22c36b30c38 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2005-06-16  Colin Walters  <walters@verbum.org>
+
+       * 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  <walters@verbum.org>
 
        * dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (_dbus_read_credentials_unix_socket):
index 7571e2fc0a1ae3ff350b2f657a2ea9b3f46ba1ca..80cc1ce80a641f1e5c81f621029b36daae3ce200 100644 (file)
@@ -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
                   {
index 83fbd3bf26220ae932be65371f0d6c2bbeb0d0b1..3297278a5055b7823d346233ac631c8d29139dcf 100644 (file)
@@ -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);