From 49c5fead392dfe6c9fb56e9672b224b84e77be4b Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 18 Sep 2025 11:36:00 -0400 Subject: [PATCH] Catch ZK validation error in profile fetch. --- .../securesms/jobs/RefreshOwnProfileJob.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java index db3dbced8a..236ce4c3d8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java @@ -9,6 +9,7 @@ import org.signal.core.util.Base64; import org.signal.core.util.logging.Log; import org.signal.libsignal.usernames.BaseUsernameException; import org.signal.libsignal.usernames.Username; +import org.signal.libsignal.zkgroup.VerificationFailedException; import org.signal.libsignal.zkgroup.profiles.ExpiringProfileKeyCredential; import org.signal.libsignal.zkgroup.profiles.ProfileKey; import org.thoughtcrime.securesms.badges.BadgeRepository; @@ -117,8 +118,17 @@ public class RefreshOwnProfileJob extends BaseJob { return; } - Recipient self = Recipient.self(); - ProfileAndCredential profileAndCredential = ProfileUtil.retrieveProfileSync(context, self, getRequestType(self), false); + Recipient self = Recipient.self(); + + ProfileAndCredential profileAndCredential; + try { + profileAndCredential = ProfileUtil.retrieveProfileSync(context, self, getRequestType(self), false); + } catch (IllegalStateException e) { + Log.w(TAG, "Unexpected exception result from profile fetch. Skipping."); + return; + } + + SignalServiceProfile profile = profileAndCredential.getProfile(); if (Util.isEmpty(profile.getName()) &&