mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-19 00:01:08 +01:00
Add defensive size check to stream read.
This commit is contained in:
committed by
jeffrey-signal
parent
281f062b29
commit
3b603f08ed
@@ -49,6 +49,7 @@ class EncryptedBackupReader private constructor(
|
||||
|
||||
companion object {
|
||||
const val MAC_SIZE = 32
|
||||
private const val MAX_FORWARD_SECRECY_METADATA_SIZE = 16 * 1024
|
||||
|
||||
/**
|
||||
* Estimated upperbound need to read backup secrecy metadata from the start of a file.
|
||||
@@ -123,6 +124,9 @@ class EncryptedBackupReader private constructor(
|
||||
return null
|
||||
}
|
||||
val metadataLength = stream.readVarInt32()
|
||||
if (metadataLength < 0 || metadataLength > MAX_FORWARD_SECRECY_METADATA_SIZE) {
|
||||
throw IOException("Invalid forward secrecy metadata length: $metadataLength")
|
||||
}
|
||||
return stream.readNBytesOrThrow(metadataLength)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user