mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
fix(security): slice memory allocation with excessive size value.
Signed-off-by: shuqiang-zheng <zhengshuqiang@oppo.com>
This commit is contained in:
parent
f8c677a041
commit
dd741df686
@ -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 {
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user