dbus_message_iter_append_basic: validate booleans too
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Thu, 3 Mar 2011 16:29:17 +0000 (16:29 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Fri, 4 Mar 2011 12:40:30 +0000 (12:40 +0000)
Sending, for instance, ((dbus_bool_t) 666) is a programming error and
should be diagnosed as such.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=16338
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
dbus/dbus-message.c

index c6b52f5..a8378e3 100644 (file)
@@ -2519,6 +2519,7 @@ dbus_message_iter_append_basic (DBusMessageIter *iter,
   switch (type)
     {
       const char * const *string_p;
+      const dbus_bool_t *bool_p;
 
       case DBUS_TYPE_STRING:
         string_p = value;
@@ -2536,8 +2537,9 @@ dbus_message_iter_append_basic (DBusMessageIter *iter,
         break;
 
       case DBUS_TYPE_BOOLEAN:
-        /* FIXME: strictly speaking we should ensure that it's in {0,1},
-         * but for now, fall through */
+        bool_p = value;
+        _dbus_return_val_if_fail (*bool_p == 0 || *bool_p == 1, FALSE);
+        break;
 
       default:
           {