From 656ca6b5e4f5fe131f3477e39fcc20372655ad59 Mon Sep 17 00:00:00 2001 From: AsamK Date: Sun, 5 Sep 2021 16:06:13 +0200 Subject: [PATCH] Prevent creation of RecipientAddress with UNKNOWN_UUID --- .../manager/storage/recipients/RecipientAddress.java | 7 +++---- .../signal/manager/storage/recipients/RecipientStore.java | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientAddress.java b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientAddress.java index 29e964b0..88877d83 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientAddress.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientAddress.java @@ -18,6 +18,7 @@ public class RecipientAddress { * @param e164 The phone number of the user, if available. */ public RecipientAddress(Optional uuid, Optional e164) { + uuid = uuid.isPresent() && uuid.get().equals(UuidUtil.UNKNOWN_UUID) ? Optional.empty() : uuid; if (!uuid.isPresent() && !e164.isPresent()) { throw new AssertionError("Must have either a UUID or E164 number!"); } @@ -31,13 +32,11 @@ public class RecipientAddress { } public RecipientAddress(SignalServiceAddress address) { - this.uuid = Optional.of(address.getUuid()); - this.e164 = Optional.ofNullable(address.getNumber().orNull()); + this(Optional.of(address.getUuid()), Optional.ofNullable(address.getNumber().orNull())); } public RecipientAddress(UUID uuid) { - this.uuid = Optional.of(uuid); - this.e164 = Optional.empty(); + this(Optional.of(uuid), Optional.empty()); } public Optional getNumber() { diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java index 86164d58..bace6a6b 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java @@ -308,7 +308,7 @@ public class RecipientStore implements RecipientResolver, ContactsStore, Profile final var byNumber = address.getNumber().isEmpty() ? Optional.empty() : findByNumberLocked(address.getNumber().get()); - final var byUuid = address.getUuid().isEmpty() || address.getUuid().get().equals(UuidUtil.UNKNOWN_UUID) + final var byUuid = address.getUuid().isEmpty() ? Optional.empty() : findByUuidLocked(address.getUuid().get()); -- 2.50.1