]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
DBusMessage: assert the properties we need DBusMessageIter to have
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Mon, 15 Feb 2016 14:58:59 +0000 (14:58 +0000)
committerSimon McVittie <smcv@debian.org>
Wed, 2 Mar 2016 18:15:36 +0000 (18:15 +0000)
We already asserted that DBusMessageIter must be at least as large
as DBusMessageRealIter (so that casting DBusMessageIter * to
DBusMessageRealIter * does not result in overflowing the stack
variable). Also assert that it must have alignment requirements at
least as strict as those of DBusMessageRealIter * (so that casting
does not increase the required alignment).

Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Thiago Macieira <thiago@kde.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=94136

dbus/dbus-message.c

index 699e022b65a13b838580f96847fc9e4c8ed2f6d6..50e87cae8d4df10c48f3cccba54a3e71bb9f98c0 100644 (file)
@@ -2025,7 +2025,10 @@ _dbus_message_iter_init_common (DBusMessage         *message,
                                 DBusMessageRealIter *real,
                                 int                  iter_type)
 {
+  /* If these static assertions fail on your platform, report it as a bug. */
   _DBUS_STATIC_ASSERT (sizeof (DBusMessageRealIter) <= sizeof (DBusMessageIter));
+  _DBUS_STATIC_ASSERT (_DBUS_ALIGNOF (DBusMessageRealIter) <=
+      _DBUS_ALIGNOF (DBusMessageIter));
 
   /* Since the iterator will read or write who-knows-what from the
    * message, we need to get in the right byte order