diff options
author | Mikhail Zabaluev <mikhail.zabaluev@nokia.com> | 2007-11-07 13:34:58 +0000 |
---|---|---|
committer | Mikhail Zabaluev <mikhail.zabaluev@nokia.com> | 2007-11-07 13:34:58 +0000 |
commit | e0ea7463618d11729d782320add2ca5477ea53fe (patch) | |
tree | 1991c638840095efadbcba11342ae7cafb5c0259 | |
parent | ec31b1c27e2b58460c7cb3fe62644da5332b779c (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.c | 11 |
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, |