Index: src/XMPPRoster.m ================================================================== --- src/XMPPRoster.m +++ src/XMPPRoster.m @@ -108,19 +108,25 @@ didReceiveIQ: (XMPPIQ*)iq { OFXMLElement *rosterElement; OFXMLElement *element; XMPPRosterItem *rosterItem; + OFString *origin; rosterElement = [iq elementForName: @"query" namespace: XMPP_NS_ROSTER]; if (rosterElement == nil) return false; if (![[iq type] isEqual: @"set"]) return false; + + // Ensure the roster push has been sent by the server + origin = [[iq from] fullJID]; + if (origin != nil && ![origin isEqual: [[connection JID] bareJID]]) + return false; element = [rosterElement elementForName: @"item" namespace: XMPP_NS_ROSTER]; if (element != nil) {