diff options
| author | Ian Gudger <igudger@google.com> | 2016-07-22 16:38:27 -0700 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2016-08-20 21:12:07 +0000 |
| commit | 7995cb86e54345cb2e3911bce4da00fbb68c2dce (patch) | |
| tree | 67c42611ccf596bdcde07fff0feebe5627018033 /src/syscall | |
| parent | fa897643a18d71a62bade50f80171f5e58449f5a (diff) | |
| download | go-7995cb86e54345cb2e3911bce4da00fbb68c2dce.tar.xz | |
syscall: validate ParseUnixCredentials inputs
Don't panic, crash, or return references to uninitialized memory when
ParseUnixCredentials is passed invalid input.
Fixes #16475
Change-Id: I140d41612e8cd8caaa94be829a415159659c217b
Reviewed-on: https://go-review.googlesource.com/25154
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/syscall')
| -rw-r--r-- | src/syscall/sockcmsg_linux.go | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/syscall/sockcmsg_linux.go b/src/syscall/sockcmsg_linux.go index 5a56b25beb..4cb9075ba8 100644 --- a/src/syscall/sockcmsg_linux.go +++ b/src/syscall/sockcmsg_linux.go @@ -31,6 +31,9 @@ func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { if m.Header.Type != SCM_CREDENTIALS { return nil, EINVAL } + if uintptr(len(m.Data)) < unsafe.Sizeof(Ucred{}) { + return nil, EINVAL + } ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) return &ucred, nil } |
