m/p/scsi: add missing length check
The same check is already present in ReadDefectDataPhysical below.
Change-Id: If03c2f725c9d6f8fa665192c8cc8662b2e629253
Reviewed-on: https://review.monogon.dev/c/monogon/+/2952
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Vouch-Run-CI: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/pkg/scsi/dev_block.go b/metropolis/pkg/scsi/dev_block.go
index 1941d83..fba0512 100644
--- a/metropolis/pkg/scsi/dev_block.go
+++ b/metropolis/pkg/scsi/dev_block.go
@@ -45,6 +45,9 @@
if defectListLength%8 != 0 {
return nil, errors.New("returned defect list not divisible by array item size")
}
+ if len(data) < int(defectListLength)+4 {
+ return nil, errors.New("returned defect list longer than buffer")
+ }
res := make([]uint64, defectListLength/8)
if err := binary.Read(bytes.NewReader(data[4:]), binary.BigEndian, &res); err != nil {
panic(err)