diff --git a/metanode/dentry.go b/metanode/dentry.go index 7006dd946..e742f5a40 100644 --- a/metanode/dentry.go +++ b/metanode/dentry.go @@ -429,7 +429,7 @@ func (td *TxDentry) Unmarshal(raw []byte) (err error) { return } if dataLen > proto.MaxBufferSize { - dataLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } data := make([]byte, int(dataLen)) if _, err = buff.Read(data); err != nil { @@ -446,7 +446,7 @@ func (td *TxDentry) Unmarshal(raw []byte) (err error) { return } if dataLen > proto.MaxBufferSize { - dataLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } data = make([]byte, int(dataLen)) if _, err = buff.Read(data); err != nil { @@ -520,7 +520,7 @@ func (td *TxUpdateDentry) Unmarshal(raw []byte) (err error) { return } if dataLen > proto.MaxBufferSize { - dataLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } data := make([]byte, int(dataLen)) if _, err = buff.Read(data); err != nil { @@ -537,7 +537,7 @@ func (td *TxUpdateDentry) Unmarshal(raw []byte) (err error) { return } if dataLen > proto.MaxBufferSize { - dataLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } data = make([]byte, int(dataLen)) if _, err = buff.Read(data); err != nil { @@ -554,7 +554,7 @@ func (td *TxUpdateDentry) Unmarshal(raw []byte) (err error) { return } if dataLen > proto.MaxBufferSize { - dataLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } data = make([]byte, int(dataLen)) if _, err = buff.Read(data); err != nil { @@ -608,7 +608,7 @@ func (d *Dentry) Unmarshal(raw []byte) (err error) { return } if keyLen > proto.MaxBufferSize { - keyLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } keyBytes := make([]byte, keyLen) if _, err = buff.Read(keyBytes); err != nil { @@ -621,7 +621,7 @@ func (d *Dentry) Unmarshal(raw []byte) (err error) { return } if valLen > proto.MaxBufferSize { - valLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } valBytes := make([]byte, valLen) if _, err = buff.Read(valBytes); err != nil { diff --git a/metanode/inode.go b/metanode/inode.go index a6b6bf097..1986e3984 100644 --- a/metanode/inode.go +++ b/metanode/inode.go @@ -310,7 +310,7 @@ func (ti *TxInode) Unmarshal(raw []byte) (err error) { return } if dataLen > proto.MaxBufferSize { - dataLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } data := make([]byte, int(dataLen)) if _, err = buff.Read(data); err != nil { @@ -326,7 +326,7 @@ func (ti *TxInode) Unmarshal(raw []byte) (err error) { return } if dataLen > proto.MaxBufferSize { - dataLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } data = make([]byte, int(dataLen)) if _, err = buff.Read(data); err != nil { @@ -549,7 +549,7 @@ func (i *Inode) Unmarshal(raw []byte) (err error) { return } if keyLen > proto.MaxBufferSize { - keyLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } keyBytes := make([]byte, keyLen) if _, err = buff.Read(keyBytes); err != nil { @@ -562,7 +562,7 @@ func (i *Inode) Unmarshal(raw []byte) (err error) { return } if valLen > proto.MaxBufferSize { - valLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } valBytes := make([]byte, valLen) if _, err = buff.Read(valBytes); err != nil { @@ -778,7 +778,7 @@ func (i *Inode) UnmarshalInodeValue(buff *bytes.Buffer) (err error) { } if symSize > 0 { if symSize > proto.MaxBufferSize { - symSize = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } i.LinkTarget = make([]byte, symSize) if _, err = io.ReadFull(buff, i.LinkTarget); err != nil { @@ -814,7 +814,7 @@ func (i *Inode) UnmarshalInodeValue(buff *bytes.Buffer) (err error) { } if extSize > 0 { if extSize > proto.MaxBufferSize { - extSize = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } extBytes := make([]byte, extSize) if _, err = io.ReadFull(buff, extBytes); err != nil { @@ -848,7 +848,7 @@ func (i *Inode) UnmarshalInodeValue(buff *bytes.Buffer) (err error) { } if ObjExtSize > 0 { if ObjExtSize > proto.MaxBufferSize { - ObjExtSize = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } objExtBytes := make([]byte, ObjExtSize) if _, err = io.ReadFull(buff, objExtBytes); err != nil { diff --git a/metanode/meta_quota_manager.go b/metanode/meta_quota_manager.go index 6ff55b85a..e114b98a5 100644 --- a/metanode/meta_quota_manager.go +++ b/metanode/meta_quota_manager.go @@ -91,7 +91,7 @@ func (qInode *MetaQuotaInode) Unmarshal(raw []byte) (err error) { return } if inodeLen > proto.MaxBufferSize { - inodeLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } inodeBytes := make([]byte, inodeLen) if _, err = buff.Read(inodeBytes); err != nil { @@ -146,7 +146,7 @@ func (qInode *TxMetaQuotaInode) Unmarshal(raw []byte) (err error) { return } if inodeLen > proto.MaxBufferSize { - inodeLen = proto.MaxBufferSize + return proto.ErrBufferSizeExceedMaximum } inodeBytes := make([]byte, inodeLen) if _, err = buff.Read(inodeBytes); err != nil { diff --git a/proto/errors.go b/proto/errors.go index 187360946..5ed54b183 100644 --- a/proto/errors.go +++ b/proto/errors.go @@ -105,6 +105,7 @@ var ( ErrPerformingRestoreReplica = errors.New("is performing restore replica") ErrPerformingDecommission = errors.New("is performing decommission") ErrWaitForAutoAddReplica = errors.New("wait for auto add replica") + ErrBufferSizeExceedMaximum = errors.New("buffer size exceeds maximum") ) // http response error code and error message definitions