Ignore malformed caps packets
authorMikael Berthe <mikael@lilotux.net>
Tue, 09 Nov 2010 11:10:26 +0100
changeset 1917 33d1c42cf07e
parent 1916 a87ac75872fe
child 1918 0fa6df17bc5c
Ignore malformed caps packets Sometimes buggy caps data have no "ver" attribute (reported by Hermitifier). This is invalid valid, so let's ignore it.
mcabber/mcabber/xmpp.c
--- a/mcabber/mcabber/xmpp.c	Tue Nov 09 11:00:41 2010 +0100
+++ b/mcabber/mcabber/xmpp.c	Tue Nov 09 11:10:26 2010 +0100
@@ -1442,6 +1442,12 @@
   if (caps && ust != offline) {
     const char *ver = lm_message_node_get_attribute(caps, "ver");
     GSList *sl_buddy = NULL;
+
+    if (!ver) {
+      scr_LogPrint(LPRINT_LOGNORM, "Error: malformed caps version (%s)", bjid);
+      goto handle_presence_return;
+    }
+
     if (rname)
       sl_buddy = roster_find(bjid, jidsearch, ROSTER_TYPE_USER);
     // Only cache the caps if the user is on the roster
@@ -1470,6 +1476,7 @@
     }
   }
 
+handle_presence_return:
   g_free(bjid);
   return LM_HANDLER_RESULT_REMOVE_MESSAGE;
 }