Validate sticker IDs during export.

This commit is contained in:
Greyson Parrelli 2025-01-24 10:56:37 -05:00
parent 252b1dbb2d
commit 655da1de76
2 changed files with 6 additions and 6 deletions

View file

@ -983,16 +983,16 @@ private fun DatabaseAttachment.toRemoteStickerMessage(sentTimestamp: Long, media
val stickerLocator = this.stickerLocator!!
val packId = try {
Hex.fromStringCondensed(stickerLocator.packId)
Hex.fromStringCondensed(stickerLocator.packId).takeIf { it.size == 16 } ?: throw IOException("Incorrect length!")
} catch (e: IOException) {
Log.w(TAG, ExportSkips.invalidChatItemStickerPackId(sentTimestamp))
Log.w(TAG, ExportSkips.invalidChatItemStickerPackId(sentTimestamp), e)
return null
}
val packKey = try {
Hex.fromStringCondensed(stickerLocator.packKey)
Hex.fromStringCondensed(stickerLocator.packKey).takeIf { it.size == 32 } ?: throw IOException("Incorrect length!")
} catch (e: IOException) {
Log.w(TAG, ExportSkips.invalidChatItemStickerPackKey(sentTimestamp))
Log.w(TAG, ExportSkips.invalidChatItemStickerPackKey(sentTimestamp), e)
return null
}

View file

@ -68,14 +68,14 @@ object StickerArchiveProcessor {
private fun StickerPackRecord.toBackupFrame(): Frame? {
val packIdBytes = try {
Hex.fromStringCondensed(this.packId)
Hex.fromStringCondensed(this.packId)?.takeIf { it.size == 16 } ?: throw IOException("Incorrect length!")
} catch (e: IOException) {
Log.w(TAG, ExportSkips.invalidStickerPackId())
return null
}
val packKeyBytes = try {
Hex.fromStringCondensed(this.packKey)
Hex.fromStringCondensed(this.packKey)?.takeIf { it.size == 32 } ?: throw IOException("Incorrect length!")
} catch (e: IOException) {
Log.w(TAG, ExportSkips.invalidStickerPackKey())
return null