Mercurial > pidgin
comparison libpurple/protocols/jabber/chat.c @ 28421:a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sat, 24 Oct 2009 00:59:12 +0000 |
parents | 41992511531f |
children | 9ae3e70a327b |
comparison
equal
deleted
inserted
replaced
28420:eec2df4b9a2d | 28421:a335d1bab20e |
---|---|
690 | 690 |
691 jabber_chat_change_topic(chat, topic); | 691 jabber_chat_change_topic(chat, topic); |
692 } | 692 } |
693 | 693 |
694 | 694 |
695 void jabber_chat_change_nick(JabberChat *chat, const char *nick) | 695 gboolean jabber_chat_change_nick(JabberChat *chat, const char *nick) |
696 { | 696 { |
697 xmlnode *presence; | 697 xmlnode *presence; |
698 char *full_jid; | 698 char *full_jid; |
699 PurplePresence *gpresence; | 699 PurpleAccount *account; |
700 PurpleStatus *status; | 700 PurpleStatus *status; |
701 JabberBuddyState state; | 701 JabberBuddyState state; |
702 char *msg; | 702 char *msg; |
703 int priority; | 703 int priority; |
704 | 704 |
705 if(!chat->muc) { | 705 if(!chat->muc) { |
706 purple_conv_chat_write(PURPLE_CONV_CHAT(chat->conv), "", | 706 purple_conv_chat_write(PURPLE_CONV_CHAT(chat->conv), "", |
707 _("Nick changing not supported in non-MUC chatrooms"), | 707 _("Nick changing not supported in non-MUC chatrooms"), |
708 PURPLE_MESSAGE_SYSTEM, time(NULL)); | 708 PURPLE_MESSAGE_SYSTEM, time(NULL)); |
709 return; | 709 return FALSE; |
710 } | 710 } |
711 | 711 |
712 gpresence = purple_account_get_presence(chat->js->gc->account); | 712 account = purple_connection_get_account(chat->js->gc); |
713 status = purple_presence_get_active_status(gpresence); | 713 status = purple_account_get_active_status(account); |
714 | 714 |
715 purple_status_to_jabber(status, &state, &msg, &priority); | 715 purple_status_to_jabber(status, &state, &msg, &priority); |
716 | 716 |
717 presence = jabber_presence_create_js(chat->js, state, msg, priority); | 717 presence = jabber_presence_create_js(chat->js, state, msg, priority); |
718 full_jid = g_strdup_printf("%s@%s/%s", chat->room, chat->server, nick); | 718 full_jid = g_strdup_printf("%s@%s/%s", chat->room, chat->server, nick); |
720 g_free(full_jid); | 720 g_free(full_jid); |
721 g_free(msg); | 721 g_free(msg); |
722 | 722 |
723 jabber_send(chat->js, presence); | 723 jabber_send(chat->js, presence); |
724 xmlnode_free(presence); | 724 xmlnode_free(presence); |
725 | |
726 return TRUE; | |
725 } | 727 } |
726 | 728 |
727 void jabber_chat_part(JabberChat *chat, const char *msg) | 729 void jabber_chat_part(JabberChat *chat, const char *msg) |
728 { | 730 { |
729 char *room_jid; | 731 char *room_jid; |