summaryrefslogtreecommitdiffhomepage
path: root/runsc/cmd/exec.go
diff options
context:
space:
mode:
authorNicolas Lacasse <nlacasse@google.com>2019-06-26 11:26:18 -0700
committergVisor bot <gvisor-bot@google.com>2019-06-26 11:27:31 -0700
commit67e2f227aac49129936efc640a6c47a0978b187d (patch)
treec41ee03a485e76d74c6cd26598316e9f53899589 /runsc/cmd/exec.go
parente98ce4a2c681855b6b4f2c1298484f60014e4b88 (diff)
Always set SysProcAttr.Ctty to an FD in the child's FD table.
Go was going to change the behavior of SysProcAttr.Ctty such that it must be an FD in the *parent* FD table: https://go-review.googlesource.com/c/go/+/178919/ However, after some debate, it was decided that this change was too backwards-incompatible, and so it was reverted. https://github.com/golang/go/issues/29458 The behavior going forward is unchanged: the Ctty FD must be an FD in the *child* FD table. PiperOrigin-RevId: 255228476
Diffstat (limited to 'runsc/cmd/exec.go')
-rw-r--r--runsc/cmd/exec.go16
1 files changed, 5 insertions, 11 deletions
diff --git a/runsc/cmd/exec.go b/runsc/cmd/exec.go
index 5a823e89a..e817eff77 100644
--- a/runsc/cmd/exec.go
+++ b/runsc/cmd/exec.go
@@ -235,18 +235,12 @@ func (ex *Exec) execChildAndWait(waitStatus *syscall.WaitStatus) subcommands.Exi
cmd.SysProcAttr = &syscall.SysProcAttr{
Setsid: true,
Setctty: true,
- Ctty: int(tty.Fd()),
+ // The Ctty FD must be the FD in the child process's FD
+ // table. Since we set cmd.Stdin/Stdout/Stderr to the
+ // tty FD, we can use any of 0, 1, or 2 here.
+ // See https://github.com/golang/go/issues/29458.
+ Ctty: 0,
}
- // TODO(b/133868570): Delete this check once Go 1.12 is no
- // longer supported.
- if console.CttyFdIsPostShuffle {
- // In go1.12 and before, the Ctty FD must be the FD in
- // the child process's FD table. Since we set
- // cmd.Stdin/Stdout/Stderr to the tty FD, we can use
- // any of 0, 1, or 2 here.
- cmd.SysProcAttr.Ctty = 0
- }
-
}
if err := cmd.Start(); err != nil {