Fix avatar provider buffer underflow.

This commit is contained in:
Clark
2023-07-25 11:31:21 -04:00
committed by Cody Henthorne
parent 557ef5820e
commit 5648fd2e91

View File

@@ -195,8 +195,10 @@ class AvatarProvider : BaseContentProvider() {
} }
val memoryFile = MemoryFile("${recipient.id}-imf", outputStream.size()) val memoryFile = MemoryFile("${recipient.id}-imf", outputStream.size())
StreamUtil.copy(ByteArrayInputStream(outputStream.toByteArray()), memoryFile.outputStream)
StreamUtil.close(memoryFile.outputStream) val memoryFileOutputStream = memoryFile.outputStream
StreamUtil.copy(ByteArrayInputStream(outputStream.toByteArray()), memoryFileOutputStream)
StreamUtil.close(memoryFileOutputStream)
return MemoryFileUtil.getParcelFileDescriptor(memoryFile) return MemoryFileUtil.getParcelFileDescriptor(memoryFile)
} }
@@ -217,8 +219,8 @@ class AvatarProvider : BaseContentProvider() {
override fun onRead(offset: Long, size: Int, data: ByteArray?): Int { override fun onRead(offset: Long, size: Int, data: ByteArray?): Int {
ensureResourceLoaded() ensureResourceLoaded()
val memoryFileSnapshot = memoryFile
return memoryFile!!.readBytes(data, offset.toInt(), 0, size) return memoryFileSnapshot!!.readBytes(data, offset.toInt(), 0, size.coerceAtMost((memoryFileSnapshot.length() - offset).toInt()))
} }
override fun onRelease() { override fun onRelease() {
@@ -240,8 +242,10 @@ class AvatarProvider : BaseContentProvider() {
Log.i(TAG, "Writing ${recipient.id} icon to MemoryFile") Log.i(TAG, "Writing ${recipient.id} icon to MemoryFile")
memoryFile = MemoryFile("${recipient.id}-imf", outputStream.size()) memoryFile = MemoryFile("${recipient.id}-imf", outputStream.size())
StreamUtil.copy(ByteArrayInputStream(outputStream.toByteArray()), memoryFile!!.outputStream)
StreamUtil.close(memoryFile!!.outputStream) val memoryFileOutputStream = memoryFile!!.outputStream
StreamUtil.copy(ByteArrayInputStream(outputStream.toByteArray()), memoryFileOutputStream)
StreamUtil.close(memoryFileOutputStream)
} }
} }
} }