Mercurial > ~mikael > mcabber > hg
diff mcabber/mcabber/xmpp.c @ 2209:412322678d59
Fix segfault when receiving a <private> Carbons message tag
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Fri, 23 Oct 2015 19:55:08 +0200 |
parents | 170597f5365b |
children | ea90906cb691 |
line wrap: on
line diff
--- 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)