From c9526c7785277db5581ebca54dc06fa0920fc56a Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 15 Feb 2016 13:52:52 +0000 Subject: [PATCH 4/4] Statically assert that the DBusMessageIter struct has no padding Bug: https://bugs.freedesktop.org/show_bug.cgi?id=94136 Signed-off-by: Simon McVittie --- dbus/dbus-message.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c index 4c34e96..384f8fd 100644 --- a/dbus/dbus-message.c +++ b/dbus/dbus-message.c @@ -2058,6 +2058,11 @@ _dbus_message_iter_init_common (DBusMessage *message, sizeof (DBusMessageIter)); _DBUS_STATIC_ASSERT (_DBUS_ALIGNOF (DBusMessageIter_1_10_0) >= _DBUS_ALIGNOF (DBusMessageIter)); + /* If this static assertion fails, it means the DBusMessageIter struct + * is not "packed", which might result in "iter = other_iter" not copying + * every byte. */ + _DBUS_STATIC_ASSERT (sizeof (DBusMessageIter) == + 4 * sizeof (void *) + sizeof (dbus_uint32_t) + 9 * sizeof (int)); /* Since the iterator will read or write who-knows-what from the * message, we need to get in the right byte order -- 2.7.0