From 91af3e60ba75e6f40314cea307a8f397cb04efd4 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 9 Nov 2023 16:13:46 -0500 Subject: [PATCH] Fix potential NPE when building an account record. --- .../thoughtcrime/securesms/storage/StorageSyncHelper.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java b/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java index 0633a43ccb..274cab7486 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java @@ -120,8 +120,8 @@ public final class StorageSyncHelper { final OptionalBool storyViewReceiptsState = SignalStore.storyValues().getViewedReceiptsEnabled() ? OptionalBool.ENABLED : OptionalBool.DISABLED; - if (self.getStorageServiceId() == null) { - Log.w(TAG, "[buildAccountRecord] No storageId for self! Generating. (Record had ID: " + (record != null && record.getStorageId() != null) + ")"); + if (self.getStorageServiceId() == null || (record != null && record.getStorageId() == null)) { + Log.w(TAG, "[buildAccountRecord] No storageId for self or record! Generating. (Self: " + (self.getStorageServiceId() != null) + ", Record: " + (record != null && record.getStorageId() != null) + ")"); SignalDatabase.recipients().updateStorageId(self.getId(), generateKey()); self = Recipient.self().fresh(); record = recipientTable.getRecordForSync(self.getId()); @@ -135,7 +135,9 @@ public final class StorageSyncHelper { final boolean hasReadOnboardingStory = SignalStore.storyValues().getUserHasViewedOnboardingStory() || SignalStore.storyValues().getUserHasReadOnboardingStory(); - SignalAccountRecord.Builder account = new SignalAccountRecord.Builder(record != null ? record.getStorageId() : self.getStorageServiceId(), record != null ? record.getSyncExtras().getStorageProto() : null) + byte[] storageId = record != null && record.getStorageId() != null ? record.getStorageId() : self.getStorageServiceId(); + + SignalAccountRecord.Builder account = new SignalAccountRecord.Builder(storageId, record != null ? record.getSyncExtras().getStorageProto() : null) .setProfileKey(self.getProfileKey()) .setGivenName(self.getProfileName().getGivenName()) .setFamilyName(self.getProfileName().getFamilyName())