mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-08-04 20:34:14 +01:00
Improve pin message validations.
This commit is contained in:
committed by
Michelle Tang
parent
5b42b115db
commit
c8dfc74d41
+1
-1
@@ -184,7 +184,7 @@ object EnvelopeContentValidator {
|
||||
return Result.Invalid("[DataMessage] Invalid poll vote!")
|
||||
}
|
||||
|
||||
if (dataMessage.pinMessage != null && (dataMessage.pinMessage.targetAuthorAciBinary.isNullOrInvalidAci() || dataMessage.pinMessage.targetSentTimestamp == null || (dataMessage.pinMessage.pinDurationSeconds == null && dataMessage.pinMessage.pinDurationForever == null))) {
|
||||
if (dataMessage.pinMessage != null && (dataMessage.pinMessage.targetAuthorAciBinary.isNullOrInvalidAci() || dataMessage.pinMessage.targetSentTimestamp == null || (dataMessage.pinMessage.pinDurationSeconds == null && dataMessage.pinMessage.pinDurationForever != true))) {
|
||||
return Result.Invalid("[DataMessage] Invalid pin message!")
|
||||
}
|
||||
|
||||
|
||||
+100
@@ -305,6 +305,106 @@ class EnvelopeContentValidatorTest {
|
||||
assert(result is EnvelopeContentValidator.Result.Valid)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `validate - ensure pin messages without a valid aci are marked invalid`() {
|
||||
val content = Content(
|
||||
dataMessage = DataMessage(
|
||||
timestamp = 1234,
|
||||
pinMessage = DataMessage.PinMessage(
|
||||
targetAuthorAciBinary = "bad".toByteArray().toByteString(),
|
||||
targetSentTimestamp = 1000,
|
||||
pinDurationSeconds = 60
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
val result = EnvelopeContentValidator.validate(Envelope(clientTimestamp = 1234), content, SELF_ACI, CiphertextMessage.WHISPER_TYPE)
|
||||
assert(result is EnvelopeContentValidator.Result.Invalid)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `validate - ensure pin messages without a target timestamp are marked invalid`() {
|
||||
val content = Content(
|
||||
dataMessage = DataMessage(
|
||||
timestamp = 1234,
|
||||
pinMessage = DataMessage.PinMessage(
|
||||
targetAuthorAciBinary = OTHER_ACI.toByteString(),
|
||||
pinDurationSeconds = 60
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
val result = EnvelopeContentValidator.validate(Envelope(clientTimestamp = 1234), content, SELF_ACI, CiphertextMessage.WHISPER_TYPE)
|
||||
assert(result is EnvelopeContentValidator.Result.Invalid)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `validate - ensure pin messages without a pin duration are marked invalid`() {
|
||||
val content = Content(
|
||||
dataMessage = DataMessage(
|
||||
timestamp = 1234,
|
||||
pinMessage = DataMessage.PinMessage(
|
||||
targetAuthorAciBinary = OTHER_ACI.toByteString(),
|
||||
targetSentTimestamp = 1000
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
val result = EnvelopeContentValidator.validate(Envelope(clientTimestamp = 1234), content, SELF_ACI, CiphertextMessage.WHISPER_TYPE)
|
||||
assert(result is EnvelopeContentValidator.Result.Invalid)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `validate - ensure pin messages with pinDurationForever set to false but no seconds are marked invalid`() {
|
||||
val content = Content(
|
||||
dataMessage = DataMessage(
|
||||
timestamp = 1234,
|
||||
pinMessage = DataMessage.PinMessage(
|
||||
targetAuthorAciBinary = OTHER_ACI.toByteString(),
|
||||
targetSentTimestamp = 1000,
|
||||
pinDurationForever = false
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
val result = EnvelopeContentValidator.validate(Envelope(clientTimestamp = 1234), content, SELF_ACI, CiphertextMessage.WHISPER_TYPE)
|
||||
assert(result is EnvelopeContentValidator.Result.Invalid)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `validate - ensure pin messages with a pin duration in seconds are marked valid`() {
|
||||
val content = Content(
|
||||
dataMessage = DataMessage(
|
||||
timestamp = 1234,
|
||||
pinMessage = DataMessage.PinMessage(
|
||||
targetAuthorAciBinary = OTHER_ACI.toByteString(),
|
||||
targetSentTimestamp = 1000,
|
||||
pinDurationSeconds = 60
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
val result = EnvelopeContentValidator.validate(Envelope(clientTimestamp = 1234), content, SELF_ACI, CiphertextMessage.WHISPER_TYPE)
|
||||
assert(result is EnvelopeContentValidator.Result.Valid)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `validate - ensure pin messages with pinDurationForever set to true are marked valid`() {
|
||||
val content = Content(
|
||||
dataMessage = DataMessage(
|
||||
timestamp = 1234,
|
||||
pinMessage = DataMessage.PinMessage(
|
||||
targetAuthorAciBinary = OTHER_ACI.toByteString(),
|
||||
targetSentTimestamp = 1000,
|
||||
pinDurationForever = true
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
val result = EnvelopeContentValidator.validate(Envelope(clientTimestamp = 1234), content, SELF_ACI, CiphertextMessage.WHISPER_TYPE)
|
||||
assert(result is EnvelopeContentValidator.Result.Valid)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `validate - ensure quote body range mentions with invalid aci are marked invalid`() {
|
||||
val content = Content(
|
||||
|
||||
Reference in New Issue
Block a user