-
Couldn't load subscription status.
- Fork 18
Description
This code is essentially always crashing, because idx iterates over img.Segs, but ibbElements is only of size ibbCount, which is almost always smaller.
converged-security-suite/pkg/provisioning/bootguard/bootguard.go
Lines 1071 to 1082 in 8e176a0
| ibbElements = make([]ibbElement, ibbCount) | |
| for idx, seg := range img.Segs { | |
| switch seg.GetFile().Name { | |
| case | |
| "fspt.bin", | |
| "fallback/verstage", | |
| "bootblock": | |
| ibbElements[idx].Base = uint32(flashBase) + cbfsbaseaddr + seg.GetFile().RecordStart + seg.GetFile().SubHeaderOffset | |
| ibbElements[idx].Size = seg.GetFile().Size | |
| ibbElements[idx].Flags = flags | |
| } |
I could easily fix that, but first I want to have an conversation how that even could happen? Are there no tests at all covering this code?
I worry about the general state of the code, because I don't believe anyone coded it like that, but there rather was some incident like a corrupt merge/rebase, that probably broke a lot more code?
It got introduced by 7df8824 in #355 which indeed was rebased a couple of times.