diff options
Diffstat (limited to 'src/pkg/syscall/sockcmsg_linux.go')
-rw-r--r-- | src/pkg/syscall/sockcmsg_linux.go | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/src/pkg/syscall/sockcmsg_linux.go b/src/pkg/syscall/sockcmsg_linux.go index 0b4caa1d0..a2e26a1f4 100644 --- a/src/pkg/syscall/sockcmsg_linux.go +++ b/src/pkg/syscall/sockcmsg_linux.go @@ -6,33 +6,31 @@ package syscall -import ( - "unsafe" -) +import "unsafe" // UnixCredentials encodes credentials into a socket control message // for sending to another process. This can be used for // authentication. func UnixCredentials(ucred *Ucred) []byte { - buf := make([]byte, CmsgSpace(SizeofUcred)) - cmsg := (*Cmsghdr)(unsafe.Pointer(&buf[0])) - cmsg.Level = SOL_SOCKET - cmsg.Type = SCM_CREDENTIALS - cmsg.SetLen(CmsgLen(SizeofUcred)) - *((*Ucred)(cmsgData(cmsg))) = *ucred - return buf + b := make([]byte, CmsgSpace(SizeofUcred)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_CREDENTIALS + h.SetLen(CmsgLen(SizeofUcred)) + *((*Ucred)(cmsgData(h))) = *ucred + return b } // ParseUnixCredentials decodes a socket control message that contains // credentials in a Ucred structure. To receive such a message, the // SO_PASSCRED option must be enabled on the socket. -func ParseUnixCredentials(msg *SocketControlMessage) (*Ucred, error) { - if msg.Header.Level != SOL_SOCKET { +func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { + if m.Header.Level != SOL_SOCKET { return nil, EINVAL } - if msg.Header.Type != SCM_CREDENTIALS { + if m.Header.Type != SCM_CREDENTIALS { return nil, EINVAL } - ucred := *(*Ucred)(unsafe.Pointer(&msg.Data[0])) + ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) return &ucred, nil } |