]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: allow processes steal a controlling terminal on Linux
authorJulio Montes <julio.montes@intel.com>
Mon, 22 May 2017 15:33:31 +0000 (10:33 -0500)
committerIan Lance Taylor <iant@golang.org>
Wed, 31 May 2017 03:49:48 +0000 (03:49 +0000)
The current implementation of forkAndExecInChild for Linux does not allow
spawned processes steal the controlling terminal from a different session
group. This patch passes 1 as the argument to TIOCSCTTY in order to allow
spawned processes steal controlling terminals.

Fixes #20454

Change-Id: I171b8981509d648b07f89bddc1e9d45cb70e00e6
Reviewed-on: https://go-review.googlesource.com/44343
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>

src/syscall/exec_linux.go

index 66fb0356ba56e24e34f772e7194199d6104216e0..5f53eaaa36919cc54470a0e0caf89ffb81960e75 100644 (file)
@@ -342,7 +342,7 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr
 
        // Set the controlling TTY to Ctty
        if sys.Setctty {
-               _, _, err1 = RawSyscall(SYS_IOCTL, uintptr(sys.Ctty), uintptr(TIOCSCTTY), 0)
+               _, _, err1 = RawSyscall(SYS_IOCTL, uintptr(sys.Ctty), uintptr(TIOCSCTTY), 1)
                if err1 != 0 {
                        goto childerror
                }