m/p/efivarfs: BootOrder fixes
This doesn't need to be a pointer as it's a slice.
There was also a bug left in here because it previously skipped over
the attributes field which we now treat separately.
Change-Id: Icc80496e9bc826ae11201f96a703fb80f97c478a
Reviewed-on: https://review.monogon.dev/c/monogon/+/1913
Tested-by: Jenkins CI
Reviewed-by: Serge Bazanski <serge@monogon.tech>
diff --git a/metropolis/pkg/efivarfs/boot.go b/metropolis/pkg/efivarfs/boot.go
index 92b8ac9..71324fe 100644
--- a/metropolis/pkg/efivarfs/boot.go
+++ b/metropolis/pkg/efivarfs/boot.go
@@ -154,16 +154,16 @@
}
// UnmarshalBootOrder loads a BootOrder from its binary representation.
-func UnmarshalBootOrder(d []byte) (*BootOrder, error) {
+func UnmarshalBootOrder(d []byte) (BootOrder, error) {
if len(d)%2 != 0 {
return nil, fmt.Errorf("invalid length: %v bytes", len(d))
}
l := len(d) / 2
out := make(BootOrder, l)
for i := 0; i < l; i++ {
- out[i] = uint16(d[4+2*i]) | uint16(d[4+2*i+1])<<8
+ out[i] = uint16(d[2*i]) | uint16(d[2*i+1])<<8
}
- return &out, nil
+ return out, nil
}
func append16(d []byte, v uint16) []byte {