From 9ef6876c8df48928895f590e8a33090c94ee99f1 Mon Sep 17 00:00:00 2001 From: edef Date: Thu, 19 May 2022 21:05:05 +0200 Subject: [PATCH] Don't use unsafe.Sizeof where encoding/binary.Size suffices unsafe.Sizeof depends on ABI details, but we're not actually using the raw memory layout of dmveritySuperblock. We're just writing it out with encoding/binary.Write, so encoding/binary.Size gives the relevant size. Signed-off-by: edef --- ext4/dmverity/dmverity.go | 7 ++++--- ext4/dmverity/dmverity_test.go | 2 -- .../github.com/Microsoft/hcsshim/ext4/dmverity/dmverity.go | 7 ++++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ext4/dmverity/dmverity.go b/ext4/dmverity/dmverity.go index 0e42037d98..f45307b961 100644 --- a/ext4/dmverity/dmverity.go +++ b/ext4/dmverity/dmverity.go @@ -9,7 +9,6 @@ import ( "fmt" "io" "os" - "unsafe" "github.com/pkg/errors" @@ -27,7 +26,10 @@ const ( VeritySignature = "verity" ) -var salt = bytes.Repeat([]byte{0}, 32) +var ( + salt = bytes.Repeat([]byte{0}, 32) + sbSize = binary.Size(dmveritySuperblock{}) +) var ( ErrSuperBlockReadFailure = errors.New("failed to read dm-verity super block") @@ -234,7 +236,6 @@ func ComputeAndWriteHashDevice(r io.ReadSeeker, w io.WriteSeeker) error { return errors.Wrap(err, "failed to write dm-verity super-block") } // write super-block padding - sbSize := int(unsafe.Sizeof(*dmVeritySB)) padding := bytes.Repeat([]byte{0}, blockSize-(sbSize%blockSize)) if _, err = w.Write(padding); err != nil { return err diff --git a/ext4/dmverity/dmverity_test.go b/ext4/dmverity/dmverity_test.go index 54c2b0dd51..b7c9e23773 100644 --- a/ext4/dmverity/dmverity_test.go +++ b/ext4/dmverity/dmverity_test.go @@ -9,7 +9,6 @@ import ( "os" "strings" "testing" - "unsafe" "github.com/pkg/errors" ) @@ -45,7 +44,6 @@ func writeDMVeritySuperBlock(filename string) (*os.File, error) { if err := binary.Write(out, binary.LittleEndian, sb); err != nil { return nil, err } - sbSize := int(unsafe.Sizeof(*sb)) padding := bytes.Repeat([]byte{0}, blockSize-(sbSize%blockSize)) if _, err = out.Write(padding); err != nil { return nil, err diff --git a/test/vendor/github.com/Microsoft/hcsshim/ext4/dmverity/dmverity.go b/test/vendor/github.com/Microsoft/hcsshim/ext4/dmverity/dmverity.go index 0e42037d98..f45307b961 100644 --- a/test/vendor/github.com/Microsoft/hcsshim/ext4/dmverity/dmverity.go +++ b/test/vendor/github.com/Microsoft/hcsshim/ext4/dmverity/dmverity.go @@ -9,7 +9,6 @@ import ( "fmt" "io" "os" - "unsafe" "github.com/pkg/errors" @@ -27,7 +26,10 @@ const ( VeritySignature = "verity" ) -var salt = bytes.Repeat([]byte{0}, 32) +var ( + salt = bytes.Repeat([]byte{0}, 32) + sbSize = binary.Size(dmveritySuperblock{}) +) var ( ErrSuperBlockReadFailure = errors.New("failed to read dm-verity super block") @@ -234,7 +236,6 @@ func ComputeAndWriteHashDevice(r io.ReadSeeker, w io.WriteSeeker) error { return errors.Wrap(err, "failed to write dm-verity super-block") } // write super-block padding - sbSize := int(unsafe.Sizeof(*dmVeritySB)) padding := bytes.Repeat([]byte{0}, blockSize-(sbSize%blockSize)) if _, err = w.Write(padding); err != nil { return err