From 8f04e1e01f51fa9bef564dbaf29be59694407d21 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Sun, 6 Feb 2005 04:21:57 +0000 Subject: 2005-02-05 Havoc Pennington * 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 --- dbus/dbus-marshal-validate.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'dbus/dbus-marshal-validate.c') 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; -- cgit