comparison 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
comparison
equal deleted inserted replaced
2208:7c843b29571b 2209:412322678d59
1110 } 1110 }
1111 1111
1112 // Check for carbons! 1112 // Check for carbons!
1113 x = lm_message_node_find_xmlns(m->node, NS_CARBONS_2); 1113 x = lm_message_node_find_xmlns(m->node, NS_CARBONS_2);
1114 gboolean carbons = FALSE; 1114 gboolean carbons = FALSE;
1115 if (x) { 1115 if (x && (!g_strcmp0(x->name, "received") || !g_strcmp0(x->name, "sent"))) {
1116 LmMessageNode *xenc; 1116 LmMessageNode *xenc;
1117 const char *carbon_name = x->name; 1117 const char *carbon_name = x->name;
1118 carbons = TRUE; 1118 carbons = TRUE;
1119 // Go 1 level deeper to the forwarded message 1119 // Go 1 level deeper to the forwarded message
1120 x = lm_message_node_find_xmlns(x, NS_FORWARD); 1120 x = lm_message_node_find_xmlns(x, NS_FORWARD);
1121 x = lm_message_node_get_child(x, "message"); 1121 if (x)
1122 x = lm_message_node_get_child(x, "message");
1123
1124 if (!x) {
1125 scr_LogPrint(LPRINT_LOGNORM,
1126 "Could not read carbon message! Please fill a bug.");
1127 goto handle_messages_return;
1128 }
1122 1129
1123 xenc = lm_message_node_find_xmlns(x, NS_ENCRYPTED); 1130 xenc = lm_message_node_find_xmlns(x, NS_ENCRYPTED);
1124 if (xenc && (p = lm_message_node_get_value(xenc)) != NULL) 1131 if (xenc && (p = lm_message_node_get_value(xenc)) != NULL)
1125 enc = p; 1132 enc = p;
1126 1133