libpurple 32531:5340f4a9bd6a: jabber: Ensure carbon-messages com...
commits at adium.im
commits at adium.im
Tue Jun 4 23:54:57 UTC 2013
details: http://hg.adium.im/libpurple/rev/5340f4a9bd6a
revision: 32531:5340f4a9bd6a
branch: adium
author: Thijs Alkemade <me at thijsalkema.de>
date: Wed Jun 05 01:53:57 2013 +0200
jabber: Ensure carbon-messages come from our own JID, to avoid spoofing by other users.
diffs (78 lines):
diff -r 1836d0d921db -r 5340f4a9bd6a libpurple/protocols/jabber/message.c
--- a/libpurple/protocols/jabber/message.c Thu May 23 21:47:32 2013 +0200
+++ b/libpurple/protocols/jabber/message.c Wed Jun 05 01:53:57 2013 +0200
@@ -514,42 +514,46 @@
* If so, use that instead for the rest of this function,
* but keep track of wether the from and to should be swapped.
*/
+ from = xmlnode_get_attrib(packet, "from");
+
+ if (jabber_is_own_account(js, from)) {
for(child = packet->child; child; child = child->next) {
- const char *xmlns = xmlnode_get_namespace(child);
+ const char *xmlns = xmlnode_get_namespace(child);
- if (purple_strequal(child->name, "forwarded") && purple_strequal(xmlns, NS_XMPP_FORWARD)) {
- xmlnode *subchild;
+ if (purple_strequal(child->name, "forwarded") && purple_strequal(xmlns, NS_XMPP_FORWARD)) {
+ xmlnode *subchild;
- for(subchild = child->child; subchild; subchild = subchild->next) {
- const char *sub_xmlns = xmlnode_get_namespace(subchild);
+ for(subchild = child->child; subchild; subchild = subchild->next) {
+ const char *sub_xmlns = xmlnode_get_namespace(subchild);
- if (purple_strequal(subchild->name, "message")
- && purple_strequal(sub_xmlns, NS_XMPP_CLIENT)) {
+ if (purple_strequal(subchild->name, "message")
+ && purple_strequal(sub_xmlns, NS_XMPP_CLIENT)) {
- /* This is the forwarded message, handle this instead */
- purple_debug_info("jabber", "It's a carbon-copy, using the wrapped message instead.\n");
- packet = subchild;
- } else if(purple_strequal(subchild->name, "delay")
- && purple_strequal(sub_xmlns, NS_DELAYED_DELIVERY)) {
+ /* This is the forwarded message, handle this instead */
+ purple_debug_info("jabber", "It's a carbon-copy, using the wrapped message instead.\n");
+ packet = subchild;
+ } else if(purple_strequal(subchild->name, "delay")
+ && purple_strequal(sub_xmlns, NS_DELAYED_DELIVERY)) {
- const char *timestamp = xmlnode_get_attrib(subchild, "stamp");
- purple_debug_info("jabber", "Found a delay stamp: %s\n", timestamp);
- delayed = TRUE;
- if(timestamp)
- message_timestamp = purple_str_to_time(timestamp, TRUE, NULL, NULL, NULL);
+ const char *timestamp = xmlnode_get_attrib(subchild, "stamp");
+ purple_debug_info("jabber", "Found a delay stamp: %s\n", timestamp);
+ delayed = TRUE;
+ if(timestamp)
+ message_timestamp = purple_str_to_time(timestamp, TRUE, NULL, NULL, NULL);
+ }
}
+ } else if (purple_strequal(child->name, "received")
+ && purple_strequal(xmlns, NS_XMPP_CARBONS)) {
+
+ purple_debug_info("jabber", "It is an incoming message.\n");
+ is_outgoing = FALSE;
+ } else if (purple_strequal(child->name, "sent")
+ && purple_strequal(xmlns, NS_XMPP_CARBONS)) {
+ purple_debug_info("jabber", "It is an outgoing message.\n");
+ is_outgoing = TRUE;
}
- } else if (purple_strequal(child->name, "received")
- && purple_strequal(xmlns, NS_XMPP_CARBONS)) {
-
- purple_debug_info("jabber", "It is an incoming message.\n");
- is_outgoing = FALSE;
- } else if (purple_strequal(child->name, "sent")
- && purple_strequal(xmlns, NS_XMPP_CARBONS)) {
- purple_debug_info("jabber", "It is an outgoing message.\n");
- is_outgoing = TRUE;
- }
- }
+ }
+ }
from = xmlnode_get_attrib(packet, "from");
id = xmlnode_get_attrib(packet, "id");
More information about the commits
mailing list