mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-07 13:55:17 +00:00
p2p: set RecvMessageCapacity to maxMsgSize in all reactors
to prevent malicious nodes from sending us large messages (~21MB, which is the default `RecvMessageCapacity`) This allows us to remove unnecessary `maxMsgSize` check in `decodeMsg`. Since each channel has a msg capacity set to `maxMsgSize`, there's no need to check it again in `decodeMsg`. Closes #1503
This commit is contained in:
@@ -394,9 +394,6 @@ func RegisterBlockchainMessages(cdc *amino.Codec) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func decodeMsg(bz []byte) (msg BlockchainMessage, err error) {
|
func decodeMsg(bz []byte) (msg BlockchainMessage, err error) {
|
||||||
if len(bz) > maxMsgSize {
|
|
||||||
return msg, fmt.Errorf("msg exceeds max size (%d > %d)", len(bz), maxMsgSize)
|
|
||||||
}
|
|
||||||
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -539,9 +539,6 @@ func RegisterBlockchainMessages(cdc *amino.Codec) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func decodeMsg(bz []byte) (msg BlockchainMessage, err error) {
|
func decodeMsg(bz []byte) (msg BlockchainMessage, err error) {
|
||||||
if len(bz) > maxMsgSize {
|
|
||||||
return msg, fmt.Errorf("msg exceeds max size (%d > %d)", len(bz), maxMsgSize)
|
|
||||||
}
|
|
||||||
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -453,9 +453,6 @@ func RegisterBlockchainMessages(cdc *amino.Codec) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func decodeMsg(bz []byte) (msg BlockchainMessage, err error) {
|
func decodeMsg(bz []byte) (msg BlockchainMessage, err error) {
|
||||||
if len(bz) > maxMsgSize {
|
|
||||||
return msg, fmt.Errorf("msg exceeds max size (%d > %d)", len(bz), maxMsgSize)
|
|
||||||
}
|
|
||||||
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1404,9 +1404,6 @@ func RegisterMessages(cdc *amino.Codec) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func decodeMsg(bz []byte) (msg Message, err error) {
|
func decodeMsg(bz []byte) (msg Message, err error) {
|
||||||
if len(bz) > maxMsgSize {
|
|
||||||
return msg, fmt.Errorf("msg exceeds max size (%d > %d)", len(bz), maxMsgSize)
|
|
||||||
}
|
|
||||||
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ func (evR *Reactor) GetChannels() []*p2p.ChannelDescriptor {
|
|||||||
{
|
{
|
||||||
ID: EvidenceChannel,
|
ID: EvidenceChannel,
|
||||||
Priority: 5,
|
Priority: 5,
|
||||||
|
RecvMessageCapacity: maxMsgSize,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -235,9 +236,6 @@ func RegisterMessages(cdc *amino.Codec) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func decodeMsg(bz []byte) (msg Message, err error) {
|
func decodeMsg(bz []byte) (msg Message, err error) {
|
||||||
if len(bz) > maxMsgSize {
|
|
||||||
return msg, fmt.Errorf("msg exceeds max size (%d > %d)", len(bz), maxMsgSize)
|
|
||||||
}
|
|
||||||
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,10 +137,12 @@ func (memR *Reactor) OnStart() error {
|
|||||||
// GetChannels implements Reactor.
|
// GetChannels implements Reactor.
|
||||||
// It returns the list of channels for this reactor.
|
// It returns the list of channels for this reactor.
|
||||||
func (memR *Reactor) GetChannels() []*p2p.ChannelDescriptor {
|
func (memR *Reactor) GetChannels() []*p2p.ChannelDescriptor {
|
||||||
|
maxMsgSize := calcMaxMsgSize(memR.config.MaxTxBytes)
|
||||||
return []*p2p.ChannelDescriptor{
|
return []*p2p.ChannelDescriptor{
|
||||||
{
|
{
|
||||||
ID: MempoolChannel,
|
ID: MempoolChannel,
|
||||||
Priority: 5,
|
Priority: 5,
|
||||||
|
RecvMessageCapacity: maxMsgSize,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -271,10 +273,6 @@ func RegisterMessages(cdc *amino.Codec) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (memR *Reactor) decodeMsg(bz []byte) (msg Message, err error) {
|
func (memR *Reactor) decodeMsg(bz []byte) (msg Message, err error) {
|
||||||
maxMsgSize := calcMaxMsgSize(memR.config.MaxTxBytes)
|
|
||||||
if l := len(bz); l > maxMsgSize {
|
|
||||||
return msg, ErrTxTooLarge{maxMsgSize, l}
|
|
||||||
}
|
|
||||||
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -180,9 +180,10 @@ func (r *Reactor) OnStop() {
|
|||||||
func (r *Reactor) GetChannels() []*conn.ChannelDescriptor {
|
func (r *Reactor) GetChannels() []*conn.ChannelDescriptor {
|
||||||
return []*conn.ChannelDescriptor{
|
return []*conn.ChannelDescriptor{
|
||||||
{
|
{
|
||||||
ID: PexChannel,
|
ID: PexChannel,
|
||||||
Priority: 1,
|
Priority: 1,
|
||||||
SendQueueCapacity: 10,
|
SendQueueCapacity: 10,
|
||||||
|
RecvMessageCapacity: maxMsgSize,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -771,9 +772,6 @@ func RegisterMessages(cdc *amino.Codec) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func decodeMsg(bz []byte) (msg Message, err error) {
|
func decodeMsg(bz []byte) (msg Message, err error) {
|
||||||
if len(bz) > maxMsgSize {
|
|
||||||
return msg, fmt.Errorf("msg exceeds max size (%d > %d)", len(bz), maxMsgSize)
|
|
||||||
}
|
|
||||||
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
err = cdc.UnmarshalBinaryBare(bz, &msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user