# HG changeset patch # User Mikael Berthe # Date 1445622908 -7200 # Node ID 412322678d5957c3d3ba1a9ec8306ccf81336fbc # Parent 7c843b29571bafee0f2f674409acfbd266a8cb8a Fix segfault when receiving a Carbons message tag diff -r 7c843b29571b -r 412322678d59 mcabber/mcabber/xmpp.c --- a/mcabber/mcabber/xmpp.c Sun Oct 18 21:02:36 2015 +0200 +++ b/mcabber/mcabber/xmpp.c Fri Oct 23 19:55:08 2015 +0200 @@ -1112,13 +1112,20 @@ // Check for carbons! x = lm_message_node_find_xmlns(m->node, NS_CARBONS_2); gboolean carbons = FALSE; - if (x) { + if (x && (!g_strcmp0(x->name, "received") || !g_strcmp0(x->name, "sent"))) { LmMessageNode *xenc; const char *carbon_name = x->name; carbons = TRUE; // Go 1 level deeper to the forwarded message x = lm_message_node_find_xmlns(x, NS_FORWARD); - x = lm_message_node_get_child(x, "message"); + if (x) + x = lm_message_node_get_child(x, "message"); + + if (!x) { + scr_LogPrint(LPRINT_LOGNORM, + "Could not read carbon message! Please fill a bug."); + goto handle_messages_return; + } xenc = lm_message_node_find_xmlns(x, NS_ENCRYPTED); if (xenc && (p = lm_message_node_get_value(xenc)) != NULL) diff -r 7c843b29571b -r 412322678d59 mcabber/mcabber/xmpp_helper.c --- a/mcabber/mcabber/xmpp_helper.c Sun Oct 18 21:02:36 2015 +0200 +++ b/mcabber/mcabber/xmpp_helper.c Fri Oct 23 19:55:08 2015 +0200 @@ -265,6 +265,8 @@ LmMessageNode *x; const char *p; + if (!node) return NULL; + for (x = node->children ; x; x = x->next) { if ((p = lm_message_node_get_attribute(x, "xmlns")) && !strcmp(p, xmlns)) break;