All slice types must have limits

The XDR unmarshaller allocates a []T when it sees a slice type and reads
the expected length, so we must always limit the length in order to
avoid allocating too much memory when encountering corruption.
This commit is contained in:
Jakob Borg
2015-08-18 08:41:34 +02:00
parent f769df16e8
commit 9c8b907ff1
3 changed files with 44 additions and 15 deletions

View File

@@ -9,7 +9,7 @@ import "fmt"
type IndexMessage struct {
Folder string
Files []FileInfo
Files []FileInfo // max:1000000
Flags uint32
Options []Option // max:64
}
@@ -20,7 +20,7 @@ type FileInfo struct {
Modified int64
Version Vector
LocalVersion int64
Blocks []BlockInfo
Blocks []BlockInfo // max:1000000
}
func (f FileInfo) String() string {
@@ -109,9 +109,9 @@ type ResponseMessage struct {
}
type ClusterConfigMessage struct {
ClientName string // max:64
ClientVersion string // max:64
Folders []Folder
ClientName string // max:64
ClientVersion string // max:64
Folders []Folder // max:1000000
Options []Option // max:64
}
@@ -125,8 +125,8 @@ func (o *ClusterConfigMessage) GetOption(key string) string {
}
type Folder struct {
ID string // max:64
Devices []Device
ID string // max:64
Devices []Device // max:1000000
Flags uint32
Options []Option // max:64
}