@@ -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