Mercurial > ~mikael > mcabber > hg
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 |