aboutsummaryrefslogtreecommitdiff
path: root/src/syscall/exec_linux.go
diff options
context:
space:
mode:
authorAlexander Morozov <lk4d4math@gmail.com>2015-08-26 20:45:28 -0700
committerIan Lance Taylor <iant@golang.org>2015-08-27 16:08:01 +0000
commit8261c887aaf997655b95591c17b1068bb627dc9d (patch)
tree84765a0389d3e7697fcb024af30fe043e700423d /src/syscall/exec_linux.go
parentb55c4a0c540f164687bcceeb50d07397b5e098be (diff)
downloadgo-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.go11
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 {