Return empty set on invalid PEP devicelist

Andreas Straub created

Change summary

src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java |  3 
src/main/java/eu/siacs/conversations/parser/IqParser.java               | 36 
2 files changed, 20 insertions(+), 19 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java 🔗

@@ -1,5 +1,6 @@
 package eu.siacs.conversations.crypto.axolotl;
 
+import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.util.Base64;
 import android.util.Log;
@@ -638,7 +639,7 @@ public class AxolotlService {
 		return ownDeviceId;
 	}
 
-	public void registerDevices(final Jid jid, final Set<Integer> deviceIds) {
+	public void registerDevices(final Jid jid, @NonNull final Set<Integer> deviceIds) {
 		for(Integer i:deviceIds) {
 			Log.d(Config.LOGTAG, "Adding Device ID:"+ jid + ":"+i);
 		}

src/main/java/eu/siacs/conversations/parser/IqParser.java 🔗

@@ -1,5 +1,6 @@
 package eu.siacs.conversations.parser;
 
+import android.support.annotation.NonNull;
 import android.util.Base64;
 import android.util.Log;
 
@@ -96,26 +97,25 @@ public class IqParser extends AbstractParser implements OnIqPacketReceived {
 		return items.findChild("item");
 	}
 
+	@NonNull
 	public Set<Integer> deviceIds(final Element item) {
 		Set<Integer> deviceIds = new HashSet<>();
-		if (item == null) {
-			return null;
-		}
-		final Element list = item.findChild("list");
-		if(list == null) {
-			return null;
-		}
-		for(Element device : list.getChildren()) {
-			if(!device.getName().equals("device")) {
-				continue;
-			}
-			try {
-				Integer id = Integer.valueOf(device.getAttribute("id"));
-				deviceIds.add(id);
-			} catch (NumberFormatException e) {
-				Log.e(Config.LOGTAG, "Encountered nvalid <device> node in PEP:" + device.toString()
-					+ ", skipping...");
-				continue;
+		if (item != null) {
+			final Element list = item.findChild("list");
+			if (list != null) {
+				for (Element device : list.getChildren()) {
+					if (!device.getName().equals("device")) {
+						continue;
+					}
+					try {
+						Integer id = Integer.valueOf(device.getAttribute("id"));
+						deviceIds.add(id);
+					} catch (NumberFormatException e) {
+						Log.e(Config.LOGTAG, "Encountered nvalid <device> node in PEP:" + device.toString()
+								+ ", skipping...");
+						continue;
+					}
+				}
 			}
 		}
 		return deviceIds;