diff options
Diffstat (limited to 'dbus/dbus-marshal-validate.c')
-rw-r--r-- | dbus/dbus-marshal-validate.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/dbus/dbus-marshal-validate.c b/dbus/dbus-marshal-validate.c index 6a3bf46e..4d492f3f 100644 --- a/dbus/dbus-marshal-validate.c +++ b/dbus/dbus-marshal-validate.c @@ -358,8 +358,13 @@ validate_body_helper (DBusTypeReader *reader, if (current_type == DBUS_TYPE_BOOLEAN) { - dbus_uint32_t v = _dbus_unpack_uint32 (byte_order, - p); + dbus_uint32_t v; + + if (p + 4 > end) + return DBUS_INVALID_NOT_ENOUGH_DATA; + + v = _dbus_unpack_uint32 (byte_order, p); + if (!(v == 0 || v == 1)) return DBUS_INVALID_BOOLEAN_NOT_ZERO_OR_ONE; } |