From 3d2dee2a7ff006d95a8f1225db80d49883b13a76 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Mon, 6 Jan 2003 22:19:09 +0000 Subject: 2003-01-07 Anders Carlsson * dbus/dbus-marshal.c: (_dbus_marshal_double), (_dbus_marshal_string), (_dbus_marshal_byte_array): * dbus/dbus-message.c: (dbus_message_append_int32), (dbus_message_append_uint32), (dbus_message_append_double), (dbus_message_append_string), (dbus_message_append_byte_array): Handle OOM restoration. --- ChangeLog | 9 +++++++++ dbus/dbus-marshal.c | 27 +++++++++++++++++++-------- dbus/dbus-message.c | 25 ++++++++++++++++++++----- 3 files changed, 48 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 976e0d47..a73d3f31 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2003-01-07 Anders Carlsson + + * dbus/dbus-marshal.c: (_dbus_marshal_double), + (_dbus_marshal_string), (_dbus_marshal_byte_array): + * dbus/dbus-message.c: (dbus_message_append_int32), + (dbus_message_append_uint32), (dbus_message_append_double), + (dbus_message_append_string), (dbus_message_append_byte_array): + Handle OOM restoration. + 2003-01-07 Anders Carlsson * dbus/dbus-marshal.c: (_dbus_marshal_string), diff --git a/dbus/dbus-marshal.c b/dbus/dbus-marshal.c index 6e4f4143..8e14d702 100644 --- a/dbus/dbus-marshal.c +++ b/dbus/dbus-marshal.c @@ -137,11 +137,6 @@ _dbus_marshal_double (DBusString *str, int byte_order, double value) { - if (!_dbus_string_set_length (str, - DBUS_ALIGN_VALUE (_dbus_string_get_length (str), - sizeof (double)))) - return FALSE; - if (byte_order != DBUS_COMPILER_BYTE_ORDER) swap_bytes ((unsigned char *)&value, sizeof (double)); @@ -209,12 +204,19 @@ _dbus_marshal_string (DBusString *str, int byte_order, const char *value) { - int len; + int len, old_string_len; + old_string_len = _dbus_string_get_length (str); + len = strlen (value); if (!_dbus_marshal_uint32 (str, byte_order, len)) - return FALSE; + { + /* Restore the previous length */ + _dbus_string_set_length (str, old_string_len); + + return FALSE; + } return _dbus_string_append_len (str, value, len + 1); } @@ -234,8 +236,17 @@ _dbus_marshal_byte_array (DBusString *str, const unsigned char *value, int len) { + int old_string_len; + + old_string_len = _dbus_string_get_length (str); + if (!_dbus_marshal_uint32 (str, byte_order, len)) - return FALSE; + { + /* Restore the previous length */ + _dbus_string_set_length (str, old_string_len); + + return FALSE; + } return _dbus_string_append_len (str, value, len); } diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c index b7f66644..864887ad 100644 --- a/dbus/dbus-message.c +++ b/dbus/dbus-message.c @@ -230,7 +230,10 @@ dbus_message_append_int32 (DBusMessage *message, _dbus_assert (!message->locked); if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_INT32)) - return FALSE; + { + _dbus_string_shorten (&message->body, 1); + return FALSE; + } return _dbus_marshal_int32 (&message->body, DBUS_COMPILER_BYTE_ORDER, value); @@ -251,7 +254,10 @@ dbus_message_append_uint32 (DBusMessage *message, _dbus_assert (!message->locked); if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_UINT32)) - return FALSE; + { + _dbus_string_shorten (&message->body, 1); + return FALSE; + } return _dbus_marshal_uint32 (&message->body, DBUS_COMPILER_BYTE_ORDER, value); @@ -272,7 +278,10 @@ dbus_message_append_double (DBusMessage *message, _dbus_assert (!message->locked); if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_INT32)) - return FALSE; + { + _dbus_string_shorten (&message->body, 1); + return FALSE; + } return _dbus_marshal_double (&message->body, DBUS_COMPILER_BYTE_ORDER, value); @@ -294,7 +303,10 @@ dbus_message_append_string (DBusMessage *message, _dbus_assert (value != NULL); if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_UTF8_STRING)) - return FALSE; + { + _dbus_string_shorten (&message->body, 1); + return FALSE; + } return _dbus_marshal_string (&message->body, DBUS_COMPILER_BYTE_ORDER, value); @@ -318,7 +330,10 @@ dbus_message_append_byte_array (DBusMessage *message, _dbus_assert (value != NULL); if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_BYTE_ARRAY)) - return FALSE; + { + _dbus_string_shorten (&message->body, 1); + return FALSE; + } return _dbus_marshal_byte_array (&message->body, DBUS_COMPILER_BYTE_ORDER, value, len); -- cgit