changeset 1917:33d1c42cf07e

Ignore malformed caps packets Sometimes buggy caps data have no "ver" attribute (reported by Hermitifier). This is invalid valid, so let's ignore it.
author Mikael Berthe <mikael@lilotux.net>
date Tue, 09 Nov 2010 11:10:26 +0100
parents a87ac75872fe
children 0fa6df17bc5c
files mcabber/mcabber/xmpp.c
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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;
 }