be more careful parsing integers in omemo

This commit is contained in:
Daniel Gultsch 2016-10-06 22:05:18 +02:00
parent 5530b0b0e2
commit 0af13fc746
2 changed files with 12 additions and 4 deletions

View file

@ -91,7 +91,11 @@ public class XmppAxolotlMessage {
private XmppAxolotlMessage(final Element axolotlMessage, final Jid from) throws IllegalArgumentException {
this.from = from;
Element header = axolotlMessage.findChild(HEADER);
this.sourceDeviceId = Integer.parseInt(header.getAttribute(SOURCEID));
try {
this.sourceDeviceId = Integer.parseInt(header.getAttribute(SOURCEID));
} catch (NumberFormatException e) {
throw new IllegalArgumentException("invalid source id");
}
List<Element> keyElements = header.getChildren();
this.keys = new HashMap<>(keyElements.size());
for (Element keyElement : keyElements) {
@ -102,7 +106,7 @@ public class XmppAxolotlMessage {
byte[] key = Base64.decode(keyElement.getContent().trim(), Base64.DEFAULT);
this.keys.put(recipientId, key);
} catch (NumberFormatException e) {
throw new IllegalArgumentException(e);
throw new IllegalArgumentException("invalid remote id");
}
break;
case IVTAG:

View file

@ -139,7 +139,11 @@ public class IqParser extends AbstractParser implements OnIqPacketReceived {
if(signedPreKeyPublic == null) {
return null;
}
return Integer.valueOf(signedPreKeyPublic.getAttribute("signedPreKeyId"));
try {
return Integer.valueOf(signedPreKeyPublic.getAttribute("signedPreKeyId"));
} catch (NumberFormatException e) {
return null;
}
}
public ECPublicKey signedPreKeyPublic(final Element bundle) {
@ -255,7 +259,7 @@ public class IqParser extends AbstractParser implements OnIqPacketReceived {
Integer signedPreKeyId = signedPreKeyId(bundleElement);
byte[] signedPreKeySignature = signedPreKeySignature(bundleElement);
IdentityKey identityKey = identityKey(bundleElement);
if(signedPreKeyPublic == null || identityKey == null) {
if(signedPreKeyId == null || signedPreKeyPublic == null || identityKey == null) {
return null;
}