diff options
author | Havoc Pennington <hp@redhat.com> | 2005-02-06 04:21:57 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2005-02-06 04:21:57 +0000 |
commit | 8f04e1e01f51fa9bef564dbaf29be59694407d21 (patch) | |
tree | 316da5fb825566b282c375bf54b05744807f3c2e /dbus/dbus-marshal-validate.c | |
parent | 0e53d4eed36f378e99802e516fbb0d1355641902 (diff) | |
download | dbus-8f04e1e01f51fa9bef564dbaf29be59694407d21.tar.gz |
2005-02-05 Havoc Pennington <hp@redhat.com>
* dbus/dbus-message-factory.c (generate_special): more test cases,
increasing coverage
* dbus/dbus-marshal-validate.c (validate_body_helper): return the
reason why a signature was invalid
* dbus/dbus-marshal-header.c (load_and_validate_field): fix to
skip the length of the string before we look at it in validation
* dbus/dbus-string-util.c (_dbus_string_test): add tests for
equal_substring
* dbus/dbus-message.c (_dbus_message_loader_new): default
max_message_length to DBUS_MAXIMUM_MESSAGE_LENGTH
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; |