summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@codefactory.se>2003-02-16 23:12:23 +0000
committerAnders Carlsson <andersca@codefactory.se>2003-02-16 23:12:23 +0000
commit8b9b1c52f5c03915d759e7b4846ab661e26347de (patch)
tree194056d6b18e5ce183cf7612f9f269229113f086
parentb293770841ec924401fc91d99a02ec73ff89dd0f (diff)
2003-02-17 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-message.c: (decode_header_data), (_dbus_message_loader_return_buffer): Set the header padding amount when loading a message.
-rw-r--r--ChangeLog6
-rw-r--r--dbus/dbus-message.c18
2 files changed, 18 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index bffbefea..a28ef5ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2003-02-17 Anders Carlsson <andersca@codefactory.se>
+
+ * dbus/dbus-message.c: (decode_header_data),
+ (_dbus_message_loader_return_buffer):
+ Set the header padding amount when loading a message.
+
2003-02-16 Anders Carlsson <andersca@codefactory.se>
* bus/dispatch.c: (send_one_message):
diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c
index ed5c1e1d..869c7921 100644
--- a/dbus/dbus-message.c
+++ b/dbus/dbus-message.c
@@ -1934,7 +1934,8 @@ static dbus_bool_t
decode_header_data (const DBusString *data,
int header_len,
int byte_order,
- HeaderField fields[FIELD_LAST])
+ HeaderField fields[FIELD_LAST],
+ int *message_padding)
{
const char *field;
int pos, new_pos;
@@ -2033,8 +2034,8 @@ decode_header_data (const DBusString *data,
break;
default:
- _dbus_verbose ("Ignoring an unknown header field: %c%c%c%c\n",
- field[0], field[1], field[2], field[3]);
+ _dbus_verbose ("Ignoring an unknown header field: %c%c%c%c at offset %d\n",
+ field[0], field[1], field[2], field[3], pos);
}
if (!_dbus_marshal_validate_arg (data, byte_order, pos, &new_pos))
@@ -2063,6 +2064,9 @@ decode_header_data (const DBusString *data,
_dbus_verbose ("header alignment padding is not nul\n");
return FALSE;
}
+
+ if (message_padding)
+ *message_padding = header_len - pos;
}
return TRUE;
@@ -2101,7 +2105,7 @@ _dbus_message_loader_return_buffer (DBusMessageLoader *loader,
{
DBusMessage *message;
const char *header_data;
- int byte_order, header_len, body_len;
+ int byte_order, header_len, body_len, header_padding;
dbus_uint32_t header_len_unsigned, body_len_unsigned;
_dbus_string_get_const_data_len (&loader->data, &header_data, 0, 16);
@@ -2176,8 +2180,9 @@ _dbus_message_loader_return_buffer (DBusMessageLoader *loader,
int i;
int next_arg;
+ _dbus_verbose_bytes_of_string (&loader->data, 0, header_len);
if (!decode_header_data (&loader->data, header_len, byte_order,
- fields))
+ fields, &header_padding))
{
_dbus_verbose ("Header was invalid\n");
loader->corrupted = TRUE;
@@ -2215,7 +2220,8 @@ _dbus_message_loader_return_buffer (DBusMessageLoader *loader,
break; /* ugh, postpone this I guess. */
message->byte_order = byte_order;
-
+ message->header_padding = header_padding;
+
/* Copy in the offsets we found */
i = 0;
while (i < FIELD_LAST)