Merge pull request #2780 from influxdb/http-cluster-panic-2774

Messages over 1GB are probably not valid
pull/2789/head
Cory LaNou 2015-06-05 06:28:20 -06:00
commit 8536488715
1 changed files with 11 additions and 0 deletions

View File

@ -13,6 +13,9 @@ import (
"github.com/influxdb/influxdb/tsdb"
)
// MaxMessageSize defines how large a message can be before we reject it
const MaxMessageSize = 1024 * 1024 * 1024 // 1GB
// Service processes data received over raw TCP connections.
type Service struct {
mu sync.RWMutex
@ -194,6 +197,14 @@ func ReadTLV(r io.Reader) (byte, []byte, error) {
return 0, nil, fmt.Errorf("read message size: %s", err)
}
if sz == 0 {
return 0, nil, fmt.Errorf("invalid message size: %d", sz)
}
if sz >= MaxMessageSize {
return 0, nil, fmt.Errorf("max message size of %d exceeded: %d", MaxMessageSize, sz)
}
// Read the value.
buf := make([]byte, sz)
if _, err := io.ReadFull(r, buf); err != nil {