From 15f51ea26efbfd56ac1e2f5628c9c64149f69e08 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 10 Mar 2022 11:14:55 -0500 Subject: [PATCH] Fix crash if synced pinned contact is malformed. --- .../signalservice/api/storage/SignalAccountRecord.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/storage/SignalAccountRecord.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/storage/SignalAccountRecord.java index 81b8c9f9bd..a56a8fa6f7 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/storage/SignalAccountRecord.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/storage/SignalAccountRecord.java @@ -315,7 +315,13 @@ public final class SignalAccountRecord implements SignalRecord { static PinnedConversation fromRemote(AccountRecord.PinnedConversation remote) { if (remote.hasContact()) { - return forContact(new SignalServiceAddress(ServiceId.parseOrThrow(remote.getContact().getUuid()), remote.getContact().getE164())); + ServiceId serviceId = ServiceId.parseOrNull(remote.getContact().getUuid()); + if (serviceId != null) { + return forContact(new SignalServiceAddress(serviceId, remote.getContact().getE164())); + } else { + Log.w(TAG, "Bad serviceId on pinned contact! Length: " + remote.getContact().getUuid()); + return PinnedConversation.forEmpty(); + } } else if (!remote.getLegacyGroupId().isEmpty()) { return forGroupV1(remote.getLegacyGroupId().toByteArray()); } else if (!remote.getGroupMasterKey().isEmpty()) {