1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2024-11-26 14:02:06 +01:00

Fix NPE in Roster if 'from' is null

This commit is contained in:
Florian Schmaus 2015-04-12 16:21:10 +02:00
parent a53894a65b
commit e3dced6eea

View file

@ -1233,10 +1233,13 @@ public final class Roster extends Manager {
final XMPPConnection connection = connection(); final XMPPConnection connection = connection();
Presence presence = (Presence) packet; Presence presence = (Presence) packet;
Jid from = presence.getFrom(); Jid from = presence.getFrom();
Resourcepart fromResource = from.getResourceOrNull(); Resourcepart fromResource = Resourcepart.EMPTY;
if (from != null) {
fromResource = from.getResourceOrNull();
if (fromResource == null) { if (fromResource == null) {
fromResource = Resourcepart.EMPTY; fromResource = Resourcepart.EMPTY;
} }
}
Jid key = getMapKey(from); Jid key = getMapKey(from);
Map<Resourcepart, Presence> userPresences; Map<Resourcepart, Presence> userPresences;
Presence response = null; Presence response = null;
@ -1313,7 +1316,10 @@ public final class Roster extends Manager {
// Error presence packets from a bare JID mean we invalidate all existing // Error presence packets from a bare JID mean we invalidate all existing
// presence info for the user. // presence info for the user.
case error: case error:
if (!from.isBareJid()) { // No need to act on error presences send without from, i.e.
// directly send from the users XMPP service, or where the from
// address is not a bare JID
if (from == null || !from.isBareJid()) {
break; break;
} }
userPresences = getUserPresences(key); userPresences = getUserPresences(key);