From 42077fdb4a3e8bb8112ba715f7d87eb8dbf4788a Mon Sep 17 00:00:00 2001 From: Boris Nagaev Date: Mon, 22 Jun 2026 23:51:12 -0500 Subject: [PATCH] wire: test v2 message trailing payload rejection --- wire/message_test.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/wire/message_test.go b/wire/message_test.go index 278d8c24..dba4ac35 100644 --- a/wire/message_test.go +++ b/wire/message_test.go @@ -347,7 +347,6 @@ func TestReadMessageWireErrors(t *testing.T) { ErrUnknownMessage, 24, }, - } t.Logf("Running %d tests", len(tests)) @@ -428,6 +427,28 @@ func TestReadMessageTrailingBytes(t *testing.T) { } } +// TestReadV2MessageTrailingBytes verifies that a v2 message with unconsumed +// trailing bytes after BtcDecode is rejected with a MessageError. +func TestReadV2MessageTrailingBytes(t *testing.T) { + payload := []byte{ + v2Messages[CmdInv], + 0x00, // zero inventory vectors + 0xaa, // trailing data not consumed by MsgInv.BtcDecode + } + + _, _, err := ReadV2MessageN( + payload, ProtocolVersion, BaseEncoding, + ) + if err == nil { + t.Fatal("expected error for v2 message with trailing bytes") + } + + var msgErr *MessageError + if !errors.As(err, &msgErr) { + t.Fatalf("expected MessageError, got: %T (%v)", err, err) + } +} + // TestWriteMessageWireErrors performs negative tests against wire encoding from // concrete messages to confirm error paths work correctly. func TestWriteMessageWireErrors(t *testing.T) {