Potential fix for empty BodyRange errors during export.

The only way I could see this being a problem is if the mention ACI was
empty. We'll have to see if that fixes it.
This commit is contained in:
Greyson Parrelli
2026-01-06 16:45:47 -05:00
committed by jeffrey-signal
parent 4fdc2bd76b
commit d50a9c61b0

View File

@@ -19,6 +19,8 @@ import org.signal.core.util.UuidUtil
import org.signal.core.util.bytes import org.signal.core.util.bytes
import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.concurrent.SignalExecutors
import org.signal.core.util.emptyIfNull import org.signal.core.util.emptyIfNull
import org.signal.core.util.isEmpty
import org.signal.core.util.isNotEmpty
import org.signal.core.util.isNotNullOrBlank import org.signal.core.util.isNotNullOrBlank
import org.signal.core.util.kibiBytes import org.signal.core.util.kibiBytes
import org.signal.core.util.logging.Log import org.signal.core.util.logging.Log
@@ -1375,10 +1377,10 @@ private fun ByteArray.toRemoteBodyRanges(dateSent: Long): List<BackupBodyRange>
return emptyList() return emptyList()
} }
return decoded.ranges.map { return decoded.ranges.map { range ->
val mention = it.mentionUuid?.let { uuid -> UuidUtil.parseOrThrow(uuid) }?.toByteArray()?.toByteString() val mention = range.mentionUuid?.let { UuidUtil.parseOrNull(it) }?.toByteArray()?.toByteString()?.takeIf { it.isNotEmpty() }
val style = if (mention == null) { val style = if (mention == null) {
it.style?.toRemote() ?: BackupBodyRange.Style.NONE range.style?.toRemote() ?: BackupBodyRange.Style.NONE
} else { } else {
null null
} }
@@ -1388,8 +1390,8 @@ private fun ByteArray.toRemoteBodyRanges(dateSent: Long): List<BackupBodyRange>
} }
BackupBodyRange( BackupBodyRange(
start = it.start, start = range.start,
length = it.length, length = range.length,
mentionAci = mention, mentionAci = mention,
style = style style = style
) )