mirror of
https://github.com/minio/minio.git
synced 2025-04-19 18:17:30 -04:00
fix: reused field crash in PartIndices (#15351)
`PartIndices` may be set if xlMetaV2Version is reused. Clear before unmarshaling and add sanity check when reading.
This commit is contained in:
parent
f939d1c183
commit
cae9aeca00
@ -83,6 +83,10 @@ func (j *xlMetaV2Version) unmarshalV(v uint8, bts []byte) (o []byte, err error)
|
|||||||
switch v {
|
switch v {
|
||||||
// We accept un-set as latest version.
|
// We accept un-set as latest version.
|
||||||
case 0, xlMetaVersion:
|
case 0, xlMetaVersion:
|
||||||
|
// Clear omitempty fields:
|
||||||
|
if j.ObjectV2 != nil && len(j.ObjectV2.PartIndices) > 0 {
|
||||||
|
j.ObjectV2.PartIndices = j.ObjectV2.PartIndices[:0]
|
||||||
|
}
|
||||||
o, err = j.UnmarshalMsg(bts)
|
o, err = j.UnmarshalMsg(bts)
|
||||||
|
|
||||||
// Clean up PartEtags on v1
|
// Clean up PartEtags on v1
|
||||||
|
@ -575,7 +575,7 @@ func (j xlMetaV2Object) ToFileInfo(volume, path string) (FileInfo, error) {
|
|||||||
fi.Parts[i].ETag = j.PartETags[i]
|
fi.Parts[i].ETag = j.PartETags[i]
|
||||||
}
|
}
|
||||||
fi.Parts[i].ActualSize = j.PartActualSizes[i]
|
fi.Parts[i].ActualSize = j.PartActualSizes[i]
|
||||||
if len(j.PartIndices) > 0 {
|
if len(j.PartIndices) == len(fi.Parts) {
|
||||||
fi.Parts[i].Index = j.PartIndices[i]
|
fi.Parts[i].Index = j.PartIndices[i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user