summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Zabaluev <mikhail.zabaluev@nokia.com>2007-11-07 13:34:58 +0000
committerMikhail Zabaluev <mikhail.zabaluev@nokia.com>2007-11-07 13:34:58 +0000
commite0ea7463618d11729d782320add2ca5477ea53fe (patch)
tree1991c638840095efadbcba11342ae7cafb5c0259
parentec31b1c27e2b58460c7cb3fe62644da5332b779c (diff)
Perform more stringent sanity checks over the status messages and Reason: header text in CANCEL.
Check if the string is a non-NULL UTF-8 nul-terminated string before sending it over DBus. 20071107133458-5b6ca-f9b676b12d46d185272374808e12e6394aca77bf.gz
-rw-r--r--src/sip-media-channel.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/sip-media-channel.c b/src/sip-media-channel.c
index d17f159..aece4d4 100644
--- a/src/sip-media-channel.c
+++ b/src/sip-media-channel.c
@@ -938,6 +938,9 @@ sip_media_channel_peer_error (SIPMediaChannel *self,
peer = sip_media_session_get_peer (priv->session);
+ if (message == NULL || !g_utf8_validate (message, -1, NULL))
+ message = "";
+
set = tp_intset_new ();
tp_intset_add (set, peer);
tp_group_mixin_change_members ((GObject *)self, message,
@@ -948,7 +951,7 @@ sip_media_channel_peer_error (SIPMediaChannel *self,
void
sip_media_channel_peer_cancel (SIPMediaChannel *self,
guint cause,
- const gchar *text)
+ const gchar *message)
{
SIPMediaChannelPrivate *priv = SIP_MEDIA_CHANNEL_GET_PRIVATE (self);
TpGroupMixin *mixin = TP_GROUP_MIXIN (self);
@@ -971,15 +974,15 @@ sip_media_channel_peer_cancel (SIPMediaChannel *self,
actor = peer;
}
- if (text == NULL)
- text = "Cancelled";
+ if (message == NULL || !g_utf8_validate (message, -1, NULL))
+ message = "Cancelled";
set = tp_intset_new ();
tp_intset_add (set, peer);
tp_intset_add (set, mixin->self_handle);
tp_group_mixin_change_members ((GObject *) self,
- text,
+ message,
NULL, /* add */
set, /* remove */
NULL,