be more careful parsing integers in omemo
This commit is contained in:
parent
5530b0b0e2
commit
0af13fc746
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue