From: AsamK Date: Wed, 12 May 2021 17:34:09 +0000 (+0200) Subject: Prevent NPE during migration, when profile key is null X-Git-Tag: v0.8.3~9 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/3fc5bec149344754f9056fca20d214b4247b96c0 Prevent NPE during migration, when profile key is null --- diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java b/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java index 475f26e8..f5ac995c 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java @@ -547,8 +547,8 @@ public class SignalAccount implements Closeable { final var legacyProfileStore = jsonProcessor.convertValue(profileStoreNode, LegacyProfileStore.class); for (var profileEntry : legacyProfileStore.getProfileEntries()) { var recipientId = recipientStore.resolveRecipient(profileEntry.getServiceAddress()); - recipientStore.storeProfileKey(recipientId, profileEntry.getProfileKey()); recipientStore.storeProfileKeyCredential(recipientId, profileEntry.getProfileKeyCredential()); + recipientStore.storeProfileKey(recipientId, profileEntry.getProfileKey()); final var profile = profileEntry.getProfile(); if (profile != null) { final var capabilities = new HashSet(); 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 fb7394b5..c8a11340 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 @@ -226,7 +226,7 @@ public class RecipientStore implements ContactsStore, ProfileStore { public void storeProfileKey(final RecipientId recipientId, final ProfileKey profileKey) { synchronized (recipients) { final var recipient = recipients.get(recipientId); - if (profileKey.equals(recipient.getProfileKey())) { + if (profileKey != null && profileKey.equals(recipient.getProfileKey())) { return; } diff --git a/src/main/java/org/asamk/signal/App.java b/src/main/java/org/asamk/signal/App.java index af3fea4c..5c19a403 100644 --- a/src/main/java/org/asamk/signal/App.java +++ b/src/main/java/org/asamk/signal/App.java @@ -241,6 +241,7 @@ public class App { } catch (NotRegisteredException e) { throw new UserErrorException("User " + username + " is not registered."); } catch (Throwable e) { + logger.debug("Loading state file failed", e); throw new UnexpectedErrorException("Error loading state file for user " + username + ": "