diff options
-rw-r--r-- | pkg/abi/linux/socket.go | 4 | ||||
-rw-r--r-- | pkg/sentry/fs/host/util_unsafe.go | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/pkg/abi/linux/socket.go b/pkg/abi/linux/socket.go index 9a78cc131..19b5fa212 100644 --- a/pkg/abi/linux/socket.go +++ b/pkg/abi/linux/socket.go @@ -140,6 +140,10 @@ const ( SO_TYPE = 3 ) +// SockAddrMax is the maximum size of a struct sockaddr, from +// uapi/linux/socket.h. +const SockAddrMax = 128 + // SockAddrInt is struct sockaddr_in, from uapi/linux/in.h. type SockAddrInet struct { Family uint16 diff --git a/pkg/sentry/fs/host/util_unsafe.go b/pkg/sentry/fs/host/util_unsafe.go index c38d2392d..2ecb54319 100644 --- a/pkg/sentry/fs/host/util_unsafe.go +++ b/pkg/sentry/fs/host/util_unsafe.go @@ -23,6 +23,9 @@ import ( ktime "gvisor.googlesource.com/gvisor/pkg/sentry/kernel/time" ) +// NulByte is a single NUL byte. It is passed to readlinkat as an empty string. +var NulByte byte = '\x00' + func createLink(fd int, name string, linkName string) error { namePtr, err := syscall.BytePtrFromString(name) if err != nil { @@ -50,7 +53,7 @@ func readLink(fd int) (string, error) { n, _, errno := syscall.Syscall6( syscall.SYS_READLINKAT, uintptr(fd), - uintptr(unsafe.Pointer(syscall.StringBytePtr(""))), + uintptr(unsafe.Pointer(&NulByte)), // "" uintptr(unsafe.Pointer(&b[0])), uintptr(l), 0, 0) |