From a8419d5f02e7540ee4f7ebbd1fcc9c5552f1ad6e Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sun, 12 Sep 2021 11:07:28 -0400 Subject: [PATCH] Fix potential crash when reading bad GV1 ids in block sync. --- .../securesms/database/RecipientDatabase.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java index 753efd9898..f5bb70e419 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java @@ -39,6 +39,7 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.ProfileKeyCreden import org.thoughtcrime.securesms.database.model.databaseprotos.RecipientExtras; import org.thoughtcrime.securesms.database.model.databaseprotos.Wallpaper; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; +import org.thoughtcrime.securesms.groups.BadGroupIdException; import org.thoughtcrime.securesms.groups.GroupId; import org.thoughtcrime.securesms.groups.v2.ProfileKeySet; import org.thoughtcrime.securesms.groups.v2.processing.GroupsV2StateProcessor; @@ -2658,7 +2659,15 @@ public class RecipientDatabase extends Database { db.update(TABLE_NAME, setBlocked, UUID + " = ?", new String[] { uuid }); } - List groupIdStrings = Stream.of(groupIds).map(GroupId::v1orThrow).toList(); + List groupIdStrings = new ArrayList<>(groupIds.size()); + + for (byte[] raw : groupIds) { + try { + groupIdStrings.add(GroupId.v1(raw)); + } catch (BadGroupIdException e) { + Log.w(TAG, "[applyBlockedUpdate] Bad GV1 ID!"); + } + } for (GroupId.V1 groupId : groupIdStrings) { db.update(TABLE_NAME, setBlocked, GROUP_ID + " = ?", new String[] { groupId.toString() });