From 6503e82d3c7ac290fdc5f08736a724f7f6f9604e Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Tue, 9 May 2023 15:34:08 +0100 Subject: [PATCH] Follow unsafe rules. (#1449) Signed-off-by: Nuno Cruces --- imports/wasi_snapshot_preview1/fs.go | 14 ++++------- .../integration_test/bench/testdata/case.go | 8 +------ .../integration_test/bench/testdata/case.wasm | Bin 16479 -> 27498 bytes .../integration_test/fuzz/wazerolib/nodiff.go | 22 +++++++++--------- .../fuzz/wazerolib/validate.go | 11 +++++---- .../integration_test/vs/time/time_test.go | 1 - internal/platform/mmap_windows.go | 4 ++-- internal/platform/select_windows.go | 14 +++++------ internal/platform/time_cgo.go | 1 - 9 files changed, 32 insertions(+), 43 deletions(-) diff --git a/imports/wasi_snapshot_preview1/fs.go b/imports/wasi_snapshot_preview1/fs.go index fe7ea8b5..9226298f 100644 --- a/imports/wasi_snapshot_preview1/fs.go +++ b/imports/wasi_snapshot_preview1/fs.go @@ -6,7 +6,6 @@ import ( "io/fs" "math" "path" - "reflect" "strings" "syscall" "unsafe" @@ -1988,18 +1987,15 @@ func pathSymlinkFn(_ context.Context, mod api.Module, params []uint64) syscall.E return dir.FS.Symlink( // Do not join old path since it's only resolved when dereference the link created here. // And the dereference result depends on the opening directory's file descriptor at that point. - bufToStr(oldPathBuf, int(oldPathLen)), - path.Join(dir.Name, bufToStr(newPathBuf, int(newPathLen))), + bufToStr(oldPathBuf), + path.Join(dir.Name, bufToStr(newPathBuf)), ) } // bufToStr converts the given byte slice as string unsafely. -func bufToStr(buf []byte, l int) string { - return *(*string)(unsafe.Pointer(&reflect.SliceHeader{ //nolint - Data: uintptr(unsafe.Pointer(&buf[0])), - Len: l, - Cap: l, - })) +func bufToStr(buf []byte) string { + // TODO: use unsafe.String after flooring Go 1.20. + return *(*string)(unsafe.Pointer(&buf)) } // pathUnlinkFile is the WASI function named PathUnlinkFileName which unlinks a diff --git a/internal/integration_test/bench/testdata/case.go b/internal/integration_test/bench/testdata/case.go index 676d2380..bdc1ea9f 100644 --- a/internal/integration_test/bench/testdata/case.go +++ b/internal/integration_test/bench/testdata/case.go @@ -3,7 +3,6 @@ package main import ( "encoding/base64" "math/rand" - "reflect" "strings" "unsafe" ) @@ -27,12 +26,7 @@ func getRandomString() string { var bufPtr *byte var bufSize int getRandomStringRaw(&bufPtr, &bufSize) - //nolint - return *(*string)(unsafe.Pointer(&reflect.SliceHeader{ - Data: uintptr(unsafe.Pointer(bufPtr)), - Len: uintptr(bufSize), - Cap: uintptr(bufSize), - })) + return unsafe.String(bufPtr, bufSize) } //export base64 diff --git a/internal/integration_test/bench/testdata/case.wasm b/internal/integration_test/bench/testdata/case.wasm index 9d33eaeecd21e06dac1be6865b377016abeb0ce2..9a5c9e8343153c0f0846265fe1ec73c61235a416 100755 GIT binary patch literal 27498 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 Jp~deeCyJ24+l#UC0P7yx;Eax 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 D0)~&Q literal 16479 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 0, nil } diff --git a/internal/platform/time_cgo.go b/internal/platform/time_cgo.go index 2f6a2899..ff01d90c 100644 --- a/internal/platform/time_cgo.go +++ b/internal/platform/time_cgo.go @@ -7,6 +7,5 @@ import _ "unsafe" // for go:linkname // nanotime uses runtime.nanotime as it is available on all platforms and // benchmarks faster than using time.Since. // -//go:noescape //go:linkname nanotime runtime.nanotime func nanotime() int64