Skip to content

Commit 905e325

Browse files
authored
p2p/discover/v5wire: add tests for invalid handshake and auth data size (#29708)
1 parent 86a1f0c commit 905e325

File tree

1 file changed

+33
-3
lines changed

1 file changed

+33
-3
lines changed

p2p/discover/v5wire/encoding_test.go

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"testing"
3131

3232
"github.com/davecgh/go-spew/spew"
33+
3334
"github.com/ethereum/go-ethereum/common/hexutil"
3435
"github.com/ethereum/go-ethereum/common/mclock"
3536
"github.com/ethereum/go-ethereum/crypto"
@@ -283,9 +284,38 @@ func TestDecodeErrorsV5(t *testing.T) {
283284
b = make([]byte, 63)
284285
net.nodeA.expectDecodeErr(t, errInvalidHeader, b)
285286

286-
// TODO some more tests would be nice :)
287-
// - check invalid authdata sizes
288-
// - check invalid handshake data sizes
287+
t.Run("invalid-handshake-datasize", func(t *testing.T) {
288+
requiredNumber := 108
289+
290+
testDataFile := filepath.Join("testdata", "v5.1-ping-handshake"+".txt")
291+
enc := hexFile(testDataFile)
292+
//delete some byte from handshake to make it invalid
293+
enc = enc[:len(enc)-requiredNumber]
294+
net.nodeB.expectDecodeErr(t, errMsgTooShort, enc)
295+
})
296+
297+
t.Run("invalid-auth-datasize", func(t *testing.T) {
298+
testPacket := []byte{}
299+
testDataFiles := []string{"v5.1-whoareyou", "v5.1-ping-handshake"}
300+
for counter, name := range testDataFiles {
301+
file := filepath.Join("testdata", name+".txt")
302+
enc := hexFile(file)
303+
if counter == 0 {
304+
//make whoareyou header
305+
testPacket = enc[:sizeofStaticPacketData-1]
306+
testPacket = append(testPacket, 255)
307+
}
308+
if counter == 1 {
309+
//append invalid auth size
310+
testPacket = append(testPacket, enc[sizeofStaticPacketData:]...)
311+
}
312+
}
313+
314+
wantErr := "invalid auth size"
315+
if _, err := net.nodeB.decode(testPacket); strings.HasSuffix(err.Error(), wantErr) {
316+
t.Fatal(fmt.Errorf("(%s) got err %q, want %q", net.nodeB.ln.ID().TerminalString(), err, wantErr))
317+
}
318+
})
289319
}
290320

291321
// This test checks that all test vectors can be decoded.

0 commit comments

Comments
 (0)