diff options
Diffstat (limited to 'dbus/dbus-marshal-validate.c')
-rw-r--r-- | dbus/dbus-marshal-validate.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/dbus/dbus-marshal-validate.c b/dbus/dbus-marshal-validate.c index f7b46c0b..c1d95820 100644 --- a/dbus/dbus-marshal-validate.c +++ b/dbus/dbus-marshal-validate.c @@ -335,6 +335,7 @@ validate_body_helper (DBusTypeReader *reader, { dbus_uint32_t claimed_len; DBusString str; + DBusValidity validity; claimed_len = *p; ++p; @@ -344,9 +345,12 @@ validate_body_helper (DBusTypeReader *reader, return DBUS_INVALID_SIGNATURE_LENGTH_OUT_OF_BOUNDS; _dbus_string_init_const_len (&str, p, claimed_len); - if (!_dbus_validate_signature (&str, 0, - _dbus_string_get_length (&str))) - return DBUS_INVALID_BAD_SIGNATURE; + validity = + _dbus_validate_signature_with_reason (&str, 0, + _dbus_string_get_length (&str)); + + if (validity != DBUS_VALID) + return validity; p += claimed_len; @@ -389,7 +393,7 @@ validate_body_helper (DBusTypeReader *reader, return DBUS_INVALID_VARIANT_SIGNATURE_BAD; p += claimed_len; - + if (*p != DBUS_TYPE_INVALID) return DBUS_INVALID_VARIANT_SIGNATURE_MISSING_NUL; ++p; |