mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-22 20:18:36 +00:00
Fix avatar provider buffer underflow.
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user