aboutsummaryrefslogtreecommitdiffstats
path: root/whisper
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-04-19 23:06:56 +0800
committerobscuren <geffobscura@gmail.com>2015-04-19 23:07:40 +0800
commit8f3a7e41deff4084b166aca1337258077bd2a3e6 (patch)
treeddc62daeec7a44c2baacb986f8c9d76df25a5976 /whisper
parent4683f9c0a71fd42e749da46ac56c6ba76f379931 (diff)
parent7180699d401e64b52447ccb2cfb33004b7deb672 (diff)
downloadgo-tangerine-8f3a7e41deff4084b166aca1337258077bd2a3e6.tar
go-tangerine-8f3a7e41deff4084b166aca1337258077bd2a3e6.tar.gz
go-tangerine-8f3a7e41deff4084b166aca1337258077bd2a3e6.tar.bz2
go-tangerine-8f3a7e41deff4084b166aca1337258077bd2a3e6.tar.lz
go-tangerine-8f3a7e41deff4084b166aca1337258077bd2a3e6.tar.xz
go-tangerine-8f3a7e41deff4084b166aca1337258077bd2a3e6.tar.zst
go-tangerine-8f3a7e41deff4084b166aca1337258077bd2a3e6.zip
Merge branch 'rlp-size-validation' of https://github.com/fjl/go-ethereum into fjl-rlp-size-validation
Conflicts: eth/protocol.go
Diffstat (limited to 'whisper')
-rw-r--r--whisper/envelope.go9
-rw-r--r--whisper/peer.go2
2 files changed, 6 insertions, 5 deletions
diff --git a/whisper/envelope.go b/whisper/envelope.go
index 0a817e26e..07762c300 100644
--- a/whisper/envelope.go
+++ b/whisper/envelope.go
@@ -109,16 +109,17 @@ func (self *Envelope) Hash() common.Hash {
return self.hash
}
-// rlpenv is an Envelope but is not an rlp.Decoder.
-// It is used for decoding because we need to
-type rlpenv Envelope
-
// DecodeRLP decodes an Envelope from an RLP data stream.
func (self *Envelope) DecodeRLP(s *rlp.Stream) error {
raw, err := s.Raw()
if err != nil {
return err
}
+ // The decoding of Envelope uses the struct fields but also needs
+ // to compute the hash of the whole RLP-encoded envelope. This
+ // type has the same structure as Envelope but is not an
+ // rlp.Decoder so we can reuse the Envelope struct definition.
+ type rlpenv Envelope
if err := rlp.DecodeBytes(raw, (*rlpenv)(self)); err != nil {
return err
}
diff --git a/whisper/peer.go b/whisper/peer.go
index e4301f37c..28abf4260 100644
--- a/whisper/peer.go
+++ b/whisper/peer.go
@@ -66,7 +66,7 @@ func (self *peer) handshake() error {
if packet.Code != statusCode {
return fmt.Errorf("peer sent %x before status packet", packet.Code)
}
- s := rlp.NewStream(packet.Payload)
+ s := rlp.NewStream(packet.Payload, uint64(packet.Size))
if _, err := s.List(); err != nil {
return fmt.Errorf("bad status message: %v", err)
}