summaryrefslogtreecommitdiffhomepage
path: root/pkg
diff options
context:
space:
mode:
authorMichael Pratt <mpratt@google.com>2018-09-14 15:58:56 -0700
committerShentubot <shentubot@google.com>2018-09-14 16:00:02 -0700
commit3aa50f18a4102429aa40f5d0e518357ceaed2373 (patch)
treecdfb1357173ac3dd4f1cb9f91002896d50b3c47a /pkg
parentd7a05b4e63252006818e1aadf7a0d383d130fe54 (diff)
Reuse readlink parameter, add sockaddr max.
PiperOrigin-RevId: 213058623 Change-Id: I522598c655d633b9330990951ff1c54d1023ec29
Diffstat (limited to 'pkg')
-rw-r--r--pkg/abi/linux/socket.go4
-rw-r--r--pkg/sentry/fs/host/util_unsafe.go5
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)