mcabber/mcabber/xmpp_iq.c
changeset 2283 6e1ead98930d
parent 2268 f5402d705f67
child 2290 71ec41732035
--- a/mcabber/mcabber/xmpp_iq.c	Sun Sep 18 17:13:53 2016 +0200
+++ b/mcabber/mcabber/xmpp_iq.c	Mon Nov 21 20:35:28 2016 +0100
@@ -582,6 +582,20 @@
   int need_refresh = FALSE;
   guint roster_type;
 
+  const gchar *from = lm_message_get_from(m);
+
+  if (from) {
+    gchar *self_bjid = jidtodisp(lm_connection_get_jid(c));
+    gchar *servername = get_servername(self_bjid, "");
+    if ((!jid_equal(self_bjid, from)) &&
+       (!servername || strcasecmp(from, servername))) {
+      scr_LogPrint(LPRINT_LOGNORM, "Received invalid roster IQ request");
+      g_free(self_bjid);
+      return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+    }
+    g_free(self_bjid);
+  }
+
   y = lm_message_node_find_child(lm_message_node_find_xmlns(m->node, NS_ROSTER),
                                  "item");
   for ( ; y; y = y->next) {