From e2dbaa605bb17d4f32fbe0ab338057e2db31fdfd Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 21 Sep 2021 09:16:58 -0400 Subject: [PATCH] Fix potential stack overflow when getting identity record. --- .../securesms/database/IdentityDatabase.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java index d8467e2be..6f872999e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java @@ -38,6 +38,7 @@ import org.thoughtcrime.securesms.util.SqlUtil; import org.whispersystems.libsignal.IdentityKey; import org.whispersystems.libsignal.InvalidKeyException; import org.whispersystems.libsignal.util.guava.Optional; +import org.whispersystems.signalservice.api.util.UuidUtil; import java.io.IOException; @@ -108,11 +109,11 @@ public class IdentityDatabase extends Database { firstUse, timestamp, nonblockingApproval); - } else if (!fastIsE164(addressName)) { + } else if (UuidUtil.isUuid(addressName)) { if (DatabaseFactory.getRecipientDatabase(context).containsPhoneOrUuid(addressName)) { Recipient recipient = Recipient.external(context, addressName); - if (recipient.hasE164()) { + if (recipient.hasE164() && !UuidUtil.isUuid(recipient.requireE164())) { Log.i(TAG, "Could not find identity for UUID. Attempting E164."); return getIdentityStoreRecord(recipient.requireE164()); } else { @@ -269,8 +270,4 @@ public class IdentityDatabase extends Database { EventBus.getDefault().post(new IdentityRecord(recipientId, identityKey, verifiedStatus, firstUse, timestamp, nonBlockingApproval)); } - - private boolean fastIsE164(@NonNull String value) { - return value.charAt(0) == '+' || value.length() <= 15; - } }