diff options
author | Michael Pratt <mpratt@google.com> | 2018-09-14 15:58:56 -0700 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2018-09-14 16:00:02 -0700 |
commit | 3aa50f18a4102429aa40f5d0e518357ceaed2373 (patch) | |
tree | cdfb1357173ac3dd4f1cb9f91002896d50b3c47a /pkg | |
parent | d7a05b4e63252006818e1aadf7a0d383d130fe54 (diff) |
Reuse readlink parameter, add sockaddr max.
PiperOrigin-RevId: 213058623
Change-Id: I522598c655d633b9330990951ff1c54d1023ec29
Diffstat (limited to 'pkg')
-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) |