From 606eb2106b3d7f5cd36a4f1786d281b771bb1bf7 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Fri, 21 Jan 2005 06:18:04 +0000 Subject: 2005-01-21 Havoc Pennington * dbus/dbus-bus.c: add more return_if_fail checks * dbus/dbus-message.c (load_message): have the "no validation" mode (have to edit the code to toggle the mode for now though) * dbus/dbus-marshal-header.c (_dbus_header_load): have a mode that skips all validation; I want to use this at least for benchmark baseline, I'm not sure if it should be a publicly-available switch. --- dbus/dbus-message.c | 54 +++++++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 24 deletions(-) (limited to 'dbus/dbus-message.c') diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c index 4ddfa37a..2ed9cf2f 100644 --- a/dbus/dbus-message.c +++ b/dbus/dbus-message.c @@ -3032,7 +3032,10 @@ load_message (DBusMessageLoader *loader, DBusValidity validity; const DBusString *type_str; int type_pos; + DBusValidationMode mode; + mode = DBUS_VALIDATION_MODE_DATA_IS_UNTRUSTED; + oom = FALSE; #if 0 @@ -3043,14 +3046,15 @@ load_message (DBusMessageLoader *loader, _dbus_assert (_dbus_string_get_length (&message->header.data) == 0); _dbus_assert ((header_len + body_len) <= _dbus_string_get_length (&loader->data)); - if (!_dbus_header_load_untrusted (&message->header, - &validity, - byte_order, - fields_array_len, - header_len, - body_len, - &loader->data, 0, - _dbus_string_get_length (&loader->data))) + if (!_dbus_header_load (&message->header, + mode, + &validity, + byte_order, + fields_array_len, + header_len, + body_len, + &loader->data, 0, + _dbus_string_get_length (&loader->data))) { _dbus_verbose ("Failed to load header for new message code %d\n", validity); if (validity == DBUS_VALID) @@ -3063,23 +3067,25 @@ load_message (DBusMessageLoader *loader, message->byte_order = byte_order; /* 2. VALIDATE BODY */ - - get_const_signature (&message->header, &type_str, &type_pos); - - /* Because the bytes_remaining arg is NULL, this validates that the - * body is the right length - */ - validity = _dbus_validate_body_with_reason (type_str, - type_pos, - byte_order, - NULL, - &loader->data, - header_len, - body_len); - if (validity != DBUS_VALID) + if (mode != DBUS_VALIDATION_MODE_WE_TRUST_THIS_DATA_ABSOLUTELY) { - _dbus_verbose ("Failed to validate message body code %d\n", validity); - goto failed; + get_const_signature (&message->header, &type_str, &type_pos); + + /* Because the bytes_remaining arg is NULL, this validates that the + * body is the right length + */ + validity = _dbus_validate_body_with_reason (type_str, + type_pos, + byte_order, + NULL, + &loader->data, + header_len, + body_len); + if (validity != DBUS_VALID) + { + _dbus_verbose ("Failed to validate message body code %d\n", validity); + goto failed; + } } /* 3. COPY OVER BODY AND QUEUE MESSAGE */ -- cgit