summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-marshal-validate.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2005-02-06 04:21:57 +0000
committerHavoc Pennington <hp@redhat.com>2005-02-06 04:21:57 +0000
commit8f04e1e01f51fa9bef564dbaf29be59694407d21 (patch)
tree316da5fb825566b282c375bf54b05744807f3c2e /dbus/dbus-marshal-validate.c
parent0e53d4eed36f378e99802e516fbb0d1355641902 (diff)
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.c12
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;