From 6dfd7204baa89c6eb3903753f45b7d416a93b112 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Mon, 29 Aug 2011 11:32:36 +0200 Subject: chatroom_manager_parse_chatroom: check account path is valid https://bugzilla.gnome.org/show_bug.cgi?id=657362 --- libempathy/empathy-chatroom-manager.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'libempathy/empathy-chatroom-manager.c') diff --git a/libempathy/empathy-chatroom-manager.c b/libempathy/empathy-chatroom-manager.c index bf9ecf11f..043f8a829 100644 --- a/libempathy/empathy-chatroom-manager.c +++ b/libempathy/empathy-chatroom-manager.c @@ -210,7 +210,7 @@ static void chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager, xmlNodePtr node) { - EmpathyChatroom *chatroom; + EmpathyChatroom *chatroom = NULL; TpAccount *account; xmlNodePtr child; gchar *str; @@ -269,6 +269,11 @@ chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager, xmlFree (str); } + /* account has to be a valid Account object path */ + if (!tp_dbus_check_valid_object_path (account_id, NULL) || + !g_str_has_prefix (account_id, TP_ACCOUNT_OBJECT_PATH_BASE)) + goto out; + factory = empathy_client_factory_dup (); account = tp_simple_client_factory_ensure_account ( @@ -292,10 +297,11 @@ chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager, add_chatroom (manager, chatroom); g_signal_emit (manager, signals[CHATROOM_ADDED], 0, chatroom); +out: g_free (name); g_free (room); g_free (account_id); - g_object_unref (chatroom); + tp_clear_object (&chatroom); } static gboolean -- cgit v1.2.3