Remove file count and size limits in protocol

This commit is contained in:
Jakob Borg 2014-07-25 09:01:54 +02:00
parent 6188185b22
commit 0d9dcb2f4f
2 changed files with 5 additions and 17 deletions

View File

@ -8,7 +8,7 @@ import "fmt"
type IndexMessage struct { type IndexMessage struct {
Repository string // max:64 Repository string // max:64
Files []FileInfo // max:10000000 Files []FileInfo
} }
type FileInfo struct { type FileInfo struct {
@ -17,7 +17,7 @@ type FileInfo struct {
Modified int64 Modified int64
Version uint64 Version uint64
LocalVersion uint64 LocalVersion uint64
Blocks []BlockInfo // max:1000000 Blocks []BlockInfo
} }
func (f FileInfo) String() string { func (f FileInfo) String() string {

View File

@ -38,7 +38,7 @@ IndexMessage Structure:
struct IndexMessage { struct IndexMessage {
string Repository<64>; string Repository<64>;
FileInfo Files<10000000>; FileInfo Files<>;
} }
*/ */
@ -64,9 +64,6 @@ func (o IndexMessage) encodeXDR(xw *xdr.Writer) (int, error) {
return xw.Tot(), xdr.ErrElementSizeExceeded return xw.Tot(), xdr.ErrElementSizeExceeded
} }
xw.WriteString(o.Repository) xw.WriteString(o.Repository)
if len(o.Files) > 10000000 {
return xw.Tot(), xdr.ErrElementSizeExceeded
}
xw.WriteUint32(uint32(len(o.Files))) xw.WriteUint32(uint32(len(o.Files)))
for i := range o.Files { for i := range o.Files {
o.Files[i].encodeXDR(xw) o.Files[i].encodeXDR(xw)
@ -88,9 +85,6 @@ func (o *IndexMessage) UnmarshalXDR(bs []byte) error {
func (o *IndexMessage) decodeXDR(xr *xdr.Reader) error { func (o *IndexMessage) decodeXDR(xr *xdr.Reader) error {
o.Repository = xr.ReadStringMax(64) o.Repository = xr.ReadStringMax(64)
_FilesSize := int(xr.ReadUint32()) _FilesSize := int(xr.ReadUint32())
if _FilesSize > 10000000 {
return xdr.ErrElementSizeExceeded
}
o.Files = make([]FileInfo, _FilesSize) o.Files = make([]FileInfo, _FilesSize)
for i := range o.Files { for i := range o.Files {
(&o.Files[i]).decodeXDR(xr) (&o.Files[i]).decodeXDR(xr)
@ -139,7 +133,7 @@ struct FileInfo {
hyper Modified; hyper Modified;
unsigned hyper Version; unsigned hyper Version;
unsigned hyper LocalVersion; unsigned hyper LocalVersion;
BlockInfo Blocks<1000000>; BlockInfo Blocks<>;
} }
*/ */
@ -169,9 +163,6 @@ func (o FileInfo) encodeXDR(xw *xdr.Writer) (int, error) {
xw.WriteUint64(uint64(o.Modified)) xw.WriteUint64(uint64(o.Modified))
xw.WriteUint64(o.Version) xw.WriteUint64(o.Version)
xw.WriteUint64(o.LocalVersion) xw.WriteUint64(o.LocalVersion)
if len(o.Blocks) > 1000000 {
return xw.Tot(), xdr.ErrElementSizeExceeded
}
xw.WriteUint32(uint32(len(o.Blocks))) xw.WriteUint32(uint32(len(o.Blocks)))
for i := range o.Blocks { for i := range o.Blocks {
o.Blocks[i].encodeXDR(xw) o.Blocks[i].encodeXDR(xw)
@ -197,9 +188,6 @@ func (o *FileInfo) decodeXDR(xr *xdr.Reader) error {
o.Version = xr.ReadUint64() o.Version = xr.ReadUint64()
o.LocalVersion = xr.ReadUint64() o.LocalVersion = xr.ReadUint64()
_BlocksSize := int(xr.ReadUint32()) _BlocksSize := int(xr.ReadUint32())
if _BlocksSize > 1000000 {
return xdr.ErrElementSizeExceeded
}
o.Blocks = make([]BlockInfo, _BlocksSize) o.Blocks = make([]BlockInfo, _BlocksSize)
for i := range o.Blocks { for i := range o.Blocks {
(&o.Blocks[i]).decodeXDR(xr) (&o.Blocks[i]).decodeXDR(xr)