diff options
| author | Alexander Morozov <lk4d4math@gmail.com> | 2015-08-26 20:45:28 -0700 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2015-08-27 16:08:01 +0000 |
| commit | 8261c887aaf997655b95591c17b1068bb627dc9d (patch) | |
| tree | 84765a0389d3e7697fcb024af30fe043e700423d /src/syscall/exec_linux.go | |
| parent | b55c4a0c540f164687bcceeb50d07397b5e098be (diff) | |
| download | go-8261c887aaf997655b95591c17b1068bb627dc9d.tar.xz | |
syscall: don't call Setgroups if Credential.Groups is empty
Setgroups with zero-length groups is no-op for changing groups and
supposed to be used only for determining curent groups length. Also
because we deny setgroups by default if use GidMappings we have
unnecessary error from that no-op syscall.
Change-Id: I8f74fbca9190a3dcbbef1d886c518e01fa05eb62
Reviewed-on: https://go-review.googlesource.com/13938
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/syscall/exec_linux.go')
| -rw-r--r-- | src/syscall/exec_linux.go | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/syscall/exec_linux.go b/src/syscall/exec_linux.go index 9bac042124..8fe5491f90 100644 --- a/src/syscall/exec_linux.go +++ b/src/syscall/exec_linux.go @@ -191,13 +191,12 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr // User and groups if cred := sys.Credential; cred != nil { ngroups := uintptr(len(cred.Groups)) - var groups unsafe.Pointer if ngroups > 0 { - groups = unsafe.Pointer(&cred.Groups[0]) - } - _, _, err1 = RawSyscall(SYS_SETGROUPS, ngroups, uintptr(groups), 0) - if err1 != 0 { - goto childerror + groups := unsafe.Pointer(&cred.Groups[0]) + _, _, err1 = RawSyscall(SYS_SETGROUPS, ngroups, uintptr(groups), 0) + if err1 != 0 { + goto childerror + } } _, _, err1 = RawSyscall(SYS_SETGID, uintptr(cred.Gid), 0, 0) if err1 != 0 { |
