diff options
author | iNPUTmice <daniel@gultsch.de> | 2014-11-13 14:27:10 +0100 |
---|---|---|
committer | iNPUTmice <daniel@gultsch.de> | 2014-11-13 14:27:27 +0100 |
commit | 77ba68d61f11235f7cbe426a1c26a7f79be90aa1 (patch) | |
tree | aae19409641f971e4f39fe04ef56cb8a8426afcc | |
parent | 61f046a675978fa53b725e6da18ed27c9f312015 (diff) |
more npe checks in muc packet parser
Diffstat (limited to '')
-rw-r--r-- | src/main/java/eu/siacs/conversations/entities/MucOptions.java | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/MucOptions.java b/src/main/java/eu/siacs/conversations/entities/MucOptions.java index d7407cd5..01190374 100644 --- a/src/main/java/eu/siacs/conversations/entities/MucOptions.java +++ b/src/main/java/eu/siacs/conversations/entities/MucOptions.java @@ -151,39 +151,42 @@ public class MucOptions { String type = packet.getAttribute("type"); if (type == null) { User user = new User(); - Element item = packet.findChild("x", - "http://jabber.org/protocol/muc#user") - .findChild("item"); - user.setName(name); - user.setAffiliation(item.getAttribute("affiliation")); - user.setRole(item.getAttribute("role")); - user.setJid(item.getAttribute("jid")); - user.setName(name); - if (name.equals(this.joinnick)) { - this.isOnline = true; - this.error = ERROR_NO_ERROR; - self = user; - if (aboutToRename) { - if (renameListener != null) { - renameListener.onRename(true); - } - aboutToRename = false; - } - } else { - addUser(user); - } - if (pgp != null) { - Element x = packet.findChild("x", "jabber:x:signed"); - if (x != null) { - Element status = packet.findChild("status"); - String msg; - if (status != null) { - msg = status.getContent(); + Element x = packet.findChild("x","http://jabber.org/protocol/muc#user"); + if (x != null) { + Element item = x.findChild("item"); + if (item != null) { + user.setName(name); + user.setAffiliation(item.getAttribute("affiliation")); + user.setRole(item.getAttribute("role")); + user.setJid(item.getAttribute("jid")); + user.setName(name); + if (name.equals(this.joinnick)) { + this.isOnline = true; + this.error = ERROR_NO_ERROR; + self = user; + if (aboutToRename) { + if (renameListener != null) { + renameListener.onRename(true); + } + aboutToRename = false; + } } else { - msg = ""; + addUser(user); + } + if (pgp != null) { + Element signed = packet.findChild("x", "jabber:x:signed"); + if (signed != null) { + Element status = packet.findChild("status"); + String msg; + if (status != null) { + msg = status.getContent(); + } else { + msg = ""; + } + user.setPgpKeyId(pgp.fetchKeyId(account, msg, + signed.getContent())); + } } - user.setPgpKeyId(pgp.fetchKeyId(account, msg, - x.getContent())); } } } else if (type.equals("unavailable") && name.equals(this.joinnick)) { @@ -366,4 +369,4 @@ public class MucOptions { public Conversation getConversation() { return this.conversation; } -}
\ No newline at end of file +} |