From b9b6a57e2cdf3c5b153deaf4d94579151db50513 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 24 Mar 2023 16:32:38 -0400 Subject: [PATCH] Fix possible username conflict in storage update. --- .../org/thoughtcrime/securesms/database/RecipientTable.kt | 8 ++++++++ .../securesms/storage/AccountRecordProcessor.java | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt index 5d812e6783..9e651510a1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt @@ -981,6 +981,14 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da } } + if (update.new.username != null) { + writableDatabase + .update(TABLE_NAME) + .values(USERNAME to null) + .where("$USERNAME = ?", update.new.username!!) + .run() + } + val updateCount = writableDatabase.update(TABLE_NAME, values, "$STORAGE_SERVICE_ID = ?", arrayOf(Base64.encodeBytes(update.old.id.raw))) if (updateCount < 1) { throw AssertionError("Account update didn't match any rows!") diff --git a/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java index 37016b9fbd..e3852d20cf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java @@ -5,6 +5,7 @@ import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import org.signal.core.util.StringUtil; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.recipients.Recipient; @@ -121,11 +122,11 @@ public class AccountRecordProcessor extends DefaultStorageRecordProcessor