mirror of
https://github.com/AsamK/signal-cli.git
synced 2026-07-26 00:29:23 +00:00
Complete invalid envelope diagnostics
This commit is contained in:
parent
1cce283aca
commit
a770b03fe6
@ -271,7 +271,11 @@ public final class IncomingMessageHandler {
|
||||
final EnvelopeMetadata envelopeMetadata,
|
||||
final Content content
|
||||
) {
|
||||
final var dataMessage = content.dataMessage;
|
||||
final var dataMessage = content.dataMessage != null
|
||||
? content.dataMessage
|
||||
: content.syncMessage != null && content.syncMessage.sent != null
|
||||
? content.syncMessage.sent.message
|
||||
: null;
|
||||
final Integer bodyLength = dataMessage == null
|
||||
? null
|
||||
: dataMessage.body == null ? 0 : dataMessage.body.length();
|
||||
|
||||
@ -8,6 +8,7 @@ import org.whispersystems.signalservice.api.messages.EnvelopeContentValidator;
|
||||
import org.whispersystems.signalservice.internal.push.BodyRange;
|
||||
import org.whispersystems.signalservice.internal.push.Content;
|
||||
import org.whispersystems.signalservice.internal.push.DataMessage;
|
||||
import org.whispersystems.signalservice.internal.push.SyncMessage;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -37,4 +38,26 @@ class IncomingMessageHandlerTest {
|
||||
assertEquals(List.of(new InvalidEnvelopeContentException.InvalidBodyRange(0, 4, 3, "STYLE_BOLD")),
|
||||
exception.getInvalidBodyRanges());
|
||||
}
|
||||
|
||||
@Test
|
||||
void invalidEnvelopeContentReportsOutOfBoundsBodyRangeFromSyncMessage() {
|
||||
final var sender = ACI.parseOrThrow("2a04f0cc-199f-4b93-99d8-13c6b10a70de");
|
||||
final var bodyRange = new BodyRange.Builder().start(-1).length(2).mentionAci(sender.toString()).build();
|
||||
final var dataMessage = new DataMessage.Builder().body("hello").bodyRanges(List.of(bodyRange)).build();
|
||||
final var sent = new SyncMessage.Sent.Builder().message(dataMessage).build();
|
||||
final var content = new Content.Builder().syncMessage(new SyncMessage.Builder().sent(sent).build()).build();
|
||||
final var metadata = new EnvelopeMetadata(sender, null, 2, false, null, sender, 1);
|
||||
final var validationResult = new EnvelopeContentValidator.Result.Invalid(
|
||||
"[DataMessage] Body range with out-of-bounds start/length!",
|
||||
new Throwable());
|
||||
|
||||
final var exception = IncomingMessageHandler.createInvalidEnvelopeContentException(validationResult,
|
||||
metadata,
|
||||
content);
|
||||
|
||||
assertEquals(InvalidEnvelopeContentException.DATA_MESSAGE_BODY_RANGE_OUT_OF_BOUNDS, exception.getCode());
|
||||
assertEquals(5, exception.getBodyLength());
|
||||
assertEquals(List.of(new InvalidEnvelopeContentException.InvalidBodyRange(0, -1, 2, "MENTION")),
|
||||
exception.getInvalidBodyRanges());
|
||||
}
|
||||
}
|
||||
|
||||
@ -2949,6 +2949,12 @@
|
||||
"allDeclaredMethods": true,
|
||||
"allDeclaredConstructors": true
|
||||
},
|
||||
{
|
||||
"type": "org.asamk.signal.json.JsonError$Details",
|
||||
"allDeclaredFields": true,
|
||||
"allDeclaredMethods": true,
|
||||
"allDeclaredConstructors": true
|
||||
},
|
||||
{
|
||||
"type": "org.asamk.signal.json.JsonGroupInfo",
|
||||
"allDeclaredFields": true,
|
||||
@ -3419,6 +3425,12 @@
|
||||
{
|
||||
"type": "org.asamk.signal.logging.LogConfigurator"
|
||||
},
|
||||
{
|
||||
"type": "org.asamk.signal.manager.api.InvalidEnvelopeContentException$InvalidBodyRange",
|
||||
"allDeclaredFields": true,
|
||||
"allDeclaredMethods": true,
|
||||
"allDeclaredConstructors": true
|
||||
},
|
||||
{
|
||||
"type": "org.asamk.signal.manager.api.PhoneNumberSharingMode",
|
||||
"allDeclaredFields": true
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user