diff --git a/swarm/pss/pss.go b/swarm/pss/pss.go index 40bb408fa4..4e68a62273 100644 --- a/swarm/pss/pss.go +++ b/swarm/pss/pss.go @@ -759,6 +759,9 @@ func (p *Pss) enqueue(msg *PssMsg) error { // // Will fail if raw messages are disallowed func (p *Pss) SendRaw(address PssAddress, topic Topic, msg []byte) error { + if !checkAddress(&address) { + return errors.New("invalid address") + } pssMsgParams := &msgParams{ raw: true, } diff --git a/swarm/pss/pss_test.go b/swarm/pss/pss_test.go index 0f25c85d3b..a666bfd8d9 100644 --- a/swarm/pss/pss_test.go +++ b/swarm/pss/pss_test.go @@ -1028,6 +1028,12 @@ func TestApi(t *testing.T) { if err == nil { t.Fatal("expected error on empty msg") } + + overflowAddr := [33]byte{} + err = clients[0].Call(nil, "pss_sendRaw", hexutil.Encode(overflowAddr[:]), topic, "0x666f6f") + if err == nil { + t.Fatal("expected error on send too big address") + } } // verifies that nodes can send and receive raw (verbatim) messages