diff --git a/NOTICE b/NOTICE index 0c74e15b05..58b19b6d15 100644 --- a/NOTICE +++ b/NOTICE @@ -3,7 +3,7 @@ Copyright 2012-2017 Docker, Inc. This product includes software developed at Docker, Inc. (https://www.docker.com). -This product contains software (https://github.com/kr/pty) developed +This product contains software (https://github.com/creack/pty) developed by Keith Rarick, licensed under the MIT License. The following is courtesy of our legal counsel: diff --git a/integration-cli/docker_cli_attach_unix_test.go b/integration-cli/docker_cli_attach_unix_test.go index 2a8d705a42..1872648a4d 100644 --- a/integration-cli/docker_cli_attach_unix_test.go +++ b/integration-cli/docker_cli_attach_unix_test.go @@ -9,8 +9,8 @@ import ( "strings" "time" + "github.com/creack/pty" "github.com/go-check/check" - "github.com/kr/pty" "gotest.tools/assert" ) diff --git a/integration-cli/docker_cli_daemon_test.go b/integration-cli/docker_cli_daemon_test.go index 1b9ad8fe3c..d27e7d7e57 100644 --- a/integration-cli/docker_cli_daemon_test.go +++ b/integration-cli/docker_cli_daemon_test.go @@ -24,6 +24,7 @@ import ( "time" "github.com/cloudflare/cfssl/helpers" + "github.com/creack/pty" "github.com/docker/docker/api/types" "github.com/docker/docker/integration-cli/checker" "github.com/docker/docker/integration-cli/cli" @@ -36,7 +37,6 @@ import ( "github.com/docker/libnetwork/iptables" "github.com/docker/libtrust" "github.com/go-check/check" - "github.com/kr/pty" "golang.org/x/sys/unix" "gotest.tools/assert" "gotest.tools/icmd" diff --git a/integration-cli/docker_cli_events_unix_test.go b/integration-cli/docker_cli_events_unix_test.go index 060142f527..44252c9ac6 100644 --- a/integration-cli/docker_cli_events_unix_test.go +++ b/integration-cli/docker_cli_events_unix_test.go @@ -13,9 +13,9 @@ import ( "time" "unicode" + "github.com/creack/pty" "github.com/docker/docker/integration-cli/cli/build" "github.com/go-check/check" - "github.com/kr/pty" "golang.org/x/sys/unix" "gotest.tools/assert" ) diff --git a/integration-cli/docker_cli_exec_unix_test.go b/integration-cli/docker_cli_exec_unix_test.go index 21abcbad8c..f2f89f2be0 100644 --- a/integration-cli/docker_cli_exec_unix_test.go +++ b/integration-cli/docker_cli_exec_unix_test.go @@ -9,8 +9,8 @@ import ( "strings" "time" + "github.com/creack/pty" "github.com/go-check/check" - "github.com/kr/pty" "gotest.tools/assert" ) diff --git a/integration-cli/docker_cli_run_unix_test.go b/integration-cli/docker_cli_run_unix_test.go index 68cc666177..1675418633 100644 --- a/integration-cli/docker_cli_run_unix_test.go +++ b/integration-cli/docker_cli_run_unix_test.go @@ -17,6 +17,7 @@ import ( "syscall" "time" + "github.com/creack/pty" "github.com/docker/docker/client" "github.com/docker/docker/integration-cli/checker" "github.com/docker/docker/integration-cli/cli" @@ -26,7 +27,6 @@ import ( "github.com/docker/docker/pkg/parsers" "github.com/docker/docker/pkg/sysinfo" "github.com/go-check/check" - "github.com/kr/pty" "gotest.tools/assert" "gotest.tools/icmd" ) diff --git a/integration-cli/docker_cli_save_load_unix_test.go b/integration-cli/docker_cli_save_load_unix_test.go index 4d85204d42..cbe1dd2511 100644 --- a/integration-cli/docker_cli_save_load_unix_test.go +++ b/integration-cli/docker_cli_save_load_unix_test.go @@ -11,9 +11,9 @@ import ( "strings" "time" + "github.com/creack/pty" "github.com/docker/docker/integration-cli/cli/build" "github.com/go-check/check" - "github.com/kr/pty" "gotest.tools/assert" "gotest.tools/icmd" ) diff --git a/integration-cli/docker_cli_update_unix_test.go b/integration-cli/docker_cli_update_unix_test.go index 9a7446a90f..16b1a82e5b 100644 --- a/integration-cli/docker_cli_update_unix_test.go +++ b/integration-cli/docker_cli_update_unix_test.go @@ -10,12 +10,12 @@ import ( "strings" "time" + "github.com/creack/pty" "github.com/docker/docker/api/types" "github.com/docker/docker/client" "github.com/docker/docker/internal/test/request" "github.com/docker/docker/pkg/parsers/kernel" "github.com/go-check/check" - "github.com/kr/pty" "gotest.tools/assert" ) diff --git a/vendor.conf b/vendor.conf index f1f58be415..bc714a7edc 100644 --- a/vendor.conf +++ b/vendor.conf @@ -8,8 +8,8 @@ github.com/google/uuid 0cd6bf5da1e1c83f8b45653022c7 github.com/gorilla/mux ed099d42384823742bba0bf9a72b53b55c9e2e38 # v1.7.2 github.com/Microsoft/opengcs a10967154e143a36014584a6f664344e3bb0aa64 +github.com/creack/pty 2769f65a3a94eb8f876f44a0459d24ae7ad2e488 # v1.1.7 github.com/konsorten/go-windows-terminal-sequences f55edac94c9bbba5d6182a4be46d86a2c9b5b50e # v1.0.2 -github.com/kr/pty 521317be5ebc228a0f0ede099fa2a0b5ece22e49 # v1.1.4 github.com/mattn/go-shellwords a72fbe27a1b0ed0df2f02754945044ce1456608b # v1.0.5 github.com/sirupsen/logrus 8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f # v1.4.1 github.com/tchap/go-patricia a7f0089c6f496e8e70402f61733606daa326cac5 # v2.3.0 diff --git a/vendor/github.com/kr/pty/License b/vendor/github.com/creack/pty/LICENSE similarity index 100% rename from vendor/github.com/kr/pty/License rename to vendor/github.com/creack/pty/LICENSE diff --git a/vendor/github.com/kr/pty/README.md b/vendor/github.com/creack/pty/README.md similarity index 95% rename from vendor/github.com/kr/pty/README.md rename to vendor/github.com/creack/pty/README.md index f9bb002e03..5275014a7a 100644 --- a/vendor/github.com/kr/pty/README.md +++ b/vendor/github.com/creack/pty/README.md @@ -4,7 +4,7 @@ Pty is a Go package for using unix pseudo-terminals. ## Install - go get github.com/kr/pty + go get github.com/creack/pty ## Example @@ -14,7 +14,7 @@ Pty is a Go package for using unix pseudo-terminals. package main import ( - "github.com/kr/pty" + "github.com/creack/pty" "io" "os" "os/exec" @@ -50,7 +50,7 @@ import ( "os/signal" "syscall" - "github.com/kr/pty" + "github.com/creack/pty" "golang.org/x/crypto/ssh/terminal" ) diff --git a/vendor/github.com/kr/pty/doc.go b/vendor/github.com/creack/pty/doc.go similarity index 100% rename from vendor/github.com/kr/pty/doc.go rename to vendor/github.com/creack/pty/doc.go diff --git a/vendor/github.com/kr/pty/ioctl.go b/vendor/github.com/creack/pty/ioctl.go similarity index 86% rename from vendor/github.com/kr/pty/ioctl.go rename to vendor/github.com/creack/pty/ioctl.go index c57c19e7e2..c85cdcd14a 100644 --- a/vendor/github.com/kr/pty/ioctl.go +++ b/vendor/github.com/creack/pty/ioctl.go @@ -1,4 +1,4 @@ -// +build !windows +// +build !windows,!solaris package pty diff --git a/vendor/github.com/kr/pty/ioctl_bsd.go b/vendor/github.com/creack/pty/ioctl_bsd.go similarity index 100% rename from vendor/github.com/kr/pty/ioctl_bsd.go rename to vendor/github.com/creack/pty/ioctl_bsd.go diff --git a/vendor/github.com/creack/pty/ioctl_solaris.go b/vendor/github.com/creack/pty/ioctl_solaris.go new file mode 100644 index 0000000000..f63985f34c --- /dev/null +++ b/vendor/github.com/creack/pty/ioctl_solaris.go @@ -0,0 +1,30 @@ +package pty + +import ( + "golang.org/x/sys/unix" + "unsafe" +) + +const ( + // see /usr/include/sys/stropts.h + I_PUSH = uintptr((int32('S')<<8 | 002)) + I_STR = uintptr((int32('S')<<8 | 010)) + I_FIND = uintptr((int32('S')<<8 | 013)) + // see /usr/include/sys/ptms.h + ISPTM = (int32('P') << 8) | 1 + UNLKPT = (int32('P') << 8) | 2 + PTSSTTY = (int32('P') << 8) | 3 + ZONEPT = (int32('P') << 8) | 4 + OWNERPT = (int32('P') << 8) | 5 +) + +type strioctl struct { + ic_cmd int32 + ic_timout int32 + ic_len int32 + ic_dp unsafe.Pointer +} + +func ioctl(fd, cmd, ptr uintptr) error { + return unix.IoctlSetInt(int(fd), uint(cmd), int(ptr)) +} diff --git a/vendor/github.com/kr/pty/pty_darwin.go b/vendor/github.com/creack/pty/pty_darwin.go similarity index 100% rename from vendor/github.com/kr/pty/pty_darwin.go rename to vendor/github.com/creack/pty/pty_darwin.go diff --git a/vendor/github.com/kr/pty/pty_dragonfly.go b/vendor/github.com/creack/pty/pty_dragonfly.go similarity index 100% rename from vendor/github.com/kr/pty/pty_dragonfly.go rename to vendor/github.com/creack/pty/pty_dragonfly.go diff --git a/vendor/github.com/kr/pty/pty_freebsd.go b/vendor/github.com/creack/pty/pty_freebsd.go similarity index 100% rename from vendor/github.com/kr/pty/pty_freebsd.go rename to vendor/github.com/creack/pty/pty_freebsd.go diff --git a/vendor/github.com/kr/pty/pty_linux.go b/vendor/github.com/creack/pty/pty_linux.go similarity index 100% rename from vendor/github.com/kr/pty/pty_linux.go rename to vendor/github.com/creack/pty/pty_linux.go diff --git a/vendor/github.com/kr/pty/pty_openbsd.go b/vendor/github.com/creack/pty/pty_openbsd.go similarity index 100% rename from vendor/github.com/kr/pty/pty_openbsd.go rename to vendor/github.com/creack/pty/pty_openbsd.go diff --git a/vendor/github.com/creack/pty/pty_solaris.go b/vendor/github.com/creack/pty/pty_solaris.go new file mode 100644 index 0000000000..09ec1b7978 --- /dev/null +++ b/vendor/github.com/creack/pty/pty_solaris.go @@ -0,0 +1,139 @@ +package pty + +/* based on: +http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libc/port/gen/pt.c +*/ + +import ( + "errors" + "golang.org/x/sys/unix" + "os" + "strconv" + "syscall" + "unsafe" +) + +const NODEV = ^uint64(0) + +func open() (pty, tty *os.File, err error) { + masterfd, err := syscall.Open("/dev/ptmx", syscall.O_RDWR|unix.O_NOCTTY, 0) + //masterfd, err := syscall.Open("/dev/ptmx", syscall.O_RDWR|syscall.O_CLOEXEC|unix.O_NOCTTY, 0) + if err != nil { + return nil, nil, err + } + p := os.NewFile(uintptr(masterfd), "/dev/ptmx") + + sname, err := ptsname(p) + if err != nil { + return nil, nil, err + } + + err = grantpt(p) + if err != nil { + return nil, nil, err + } + + err = unlockpt(p) + if err != nil { + return nil, nil, err + } + + slavefd, err := syscall.Open(sname, os.O_RDWR|unix.O_NOCTTY, 0) + if err != nil { + return nil, nil, err + } + t := os.NewFile(uintptr(slavefd), sname) + + // pushing terminal driver STREAMS modules as per pts(7) + for _, mod := range([]string{"ptem", "ldterm", "ttcompat"}) { + err = streams_push(t, mod) + if err != nil { + return nil, nil, err + } + } + + return p, t, nil +} + +func minor(x uint64) uint64 { + return x & 0377 +} + +func ptsdev(fd uintptr) uint64 { + istr := strioctl{ISPTM, 0, 0, nil} + err := ioctl(fd, I_STR, uintptr(unsafe.Pointer(&istr))) + if err != nil { + return NODEV + } + var status unix.Stat_t + err = unix.Fstat(int(fd), &status) + if err != nil { + return NODEV + } + return uint64(minor(status.Rdev)) +} + +func ptsname(f *os.File) (string, error) { + dev := ptsdev(f.Fd()) + if dev == NODEV { + return "", errors.New("not a master pty") + } + fn := "/dev/pts/" + strconv.FormatInt(int64(dev), 10) + // access(2) creates the slave device (if the pty exists) + // F_OK == 0 (unistd.h) + err := unix.Access(fn, 0) + if err != nil { + return "", err + } + return fn, nil +} + +type pt_own struct { + pto_ruid int32 + pto_rgid int32 +} + +func grantpt(f *os.File) error { + if ptsdev(f.Fd()) == NODEV { + return errors.New("not a master pty") + } + var pto pt_own + pto.pto_ruid = int32(os.Getuid()) + // XXX should first attempt to get gid of DEFAULT_TTY_GROUP="tty" + pto.pto_rgid = int32(os.Getgid()) + var istr strioctl + istr.ic_cmd = OWNERPT + istr.ic_timout = 0 + istr.ic_len = int32(unsafe.Sizeof(istr)) + istr.ic_dp = unsafe.Pointer(&pto) + err := ioctl(f.Fd(), I_STR, uintptr(unsafe.Pointer(&istr))) + if err != nil { + return errors.New("access denied") + } + return nil +} + +func unlockpt(f *os.File) error { + istr := strioctl{UNLKPT, 0, 0, nil} + return ioctl(f.Fd(), I_STR, uintptr(unsafe.Pointer(&istr))) +} + +// push STREAMS modules if not already done so +func streams_push(f *os.File, mod string) error { + var err error + buf := []byte(mod) + // XXX I_FIND is not returning an error when the module + // is already pushed even though truss reports a return + // value of 1. A bug in the Go Solaris syscall interface? + // XXX without this we are at risk of the issue + // https://www.illumos.org/issues/9042 + // but since we are not using libc or XPG4.2, we should not be + // double-pushing modules + + err = ioctl(f.Fd(), I_FIND, uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return nil + } + err = ioctl(f.Fd(), I_PUSH, uintptr(unsafe.Pointer(&buf[0]))) + return err +} diff --git a/vendor/github.com/kr/pty/pty_unsupported.go b/vendor/github.com/creack/pty/pty_unsupported.go similarity index 64% rename from vendor/github.com/kr/pty/pty_unsupported.go rename to vendor/github.com/creack/pty/pty_unsupported.go index 9a3e721bc4..ceb425b19c 100644 --- a/vendor/github.com/kr/pty/pty_unsupported.go +++ b/vendor/github.com/creack/pty/pty_unsupported.go @@ -1,4 +1,4 @@ -// +build !linux,!darwin,!freebsd,!dragonfly,!openbsd +// +build !linux,!darwin,!freebsd,!dragonfly,!openbsd,!solaris package pty diff --git a/vendor/github.com/kr/pty/run.go b/vendor/github.com/creack/pty/run.go similarity index 96% rename from vendor/github.com/kr/pty/run.go rename to vendor/github.com/creack/pty/run.go index 56a26adae1..959be26b20 100644 --- a/vendor/github.com/kr/pty/run.go +++ b/vendor/github.com/creack/pty/run.go @@ -47,6 +47,7 @@ func StartWithSize(c *exec.Cmd, sz *Winsize) (pty *os.File, err error) { } c.SysProcAttr.Setctty = true c.SysProcAttr.Setsid = true + c.SysProcAttr.Ctty = int(tty.Fd()) err = c.Start() if err != nil { pty.Close() diff --git a/vendor/github.com/kr/pty/util.go b/vendor/github.com/creack/pty/util.go similarity index 98% rename from vendor/github.com/kr/pty/util.go rename to vendor/github.com/creack/pty/util.go index 2fa741cca3..8fdde0bab9 100644 --- a/vendor/github.com/kr/pty/util.go +++ b/vendor/github.com/creack/pty/util.go @@ -1,4 +1,4 @@ -// +build !windows +// +build !windows,!solaris package pty diff --git a/vendor/github.com/creack/pty/util_solaris.go b/vendor/github.com/creack/pty/util_solaris.go new file mode 100644 index 0000000000..e889692482 --- /dev/null +++ b/vendor/github.com/creack/pty/util_solaris.go @@ -0,0 +1,51 @@ +// + +package pty + +import ( + "os" + "golang.org/x/sys/unix" +) + +const ( + TIOCGWINSZ = 21608 // 'T' << 8 | 104 + TIOCSWINSZ = 21607 // 'T' << 8 | 103 +) + +// Winsize describes the terminal size. +type Winsize struct { + Rows uint16 // ws_row: Number of rows (in cells) + Cols uint16 // ws_col: Number of columns (in cells) + X uint16 // ws_xpixel: Width in pixels + Y uint16 // ws_ypixel: Height in pixels +} + +// GetsizeFull returns the full terminal size description. +func GetsizeFull(t *os.File) (size *Winsize, err error) { + var wsz *unix.Winsize + wsz, err = unix.IoctlGetWinsize(int(t.Fd()), TIOCGWINSZ) + + if err != nil { + return nil, err + } else { + return &Winsize{wsz.Row, wsz.Col, wsz.Xpixel, wsz.Ypixel}, nil + } +} + +// Get Windows Size +func Getsize(t *os.File) (rows, cols int, err error) { + var wsz *unix.Winsize + wsz, err = unix.IoctlGetWinsize(int(t.Fd()), TIOCGWINSZ) + + if err != nil { + return 80, 25, err + } else { + return int(wsz.Row), int(wsz.Col), nil + } +} + +// Setsize resizes t to s. +func Setsize(t *os.File, ws *Winsize) error { + wsz := unix.Winsize{ws.Rows, ws.Cols, ws.X, ws.Y} + return unix.IoctlSetWinsize(int(t.Fd()), TIOCSWINSZ, &wsz) +} diff --git a/vendor/github.com/kr/pty/ztypes_386.go b/vendor/github.com/creack/pty/ztypes_386.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_386.go rename to vendor/github.com/creack/pty/ztypes_386.go diff --git a/vendor/github.com/kr/pty/ztypes_amd64.go b/vendor/github.com/creack/pty/ztypes_amd64.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_amd64.go rename to vendor/github.com/creack/pty/ztypes_amd64.go diff --git a/vendor/github.com/kr/pty/ztypes_arm.go b/vendor/github.com/creack/pty/ztypes_arm.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_arm.go rename to vendor/github.com/creack/pty/ztypes_arm.go diff --git a/vendor/github.com/kr/pty/ztypes_arm64.go b/vendor/github.com/creack/pty/ztypes_arm64.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_arm64.go rename to vendor/github.com/creack/pty/ztypes_arm64.go diff --git a/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go b/vendor/github.com/creack/pty/ztypes_dragonfly_amd64.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go rename to vendor/github.com/creack/pty/ztypes_dragonfly_amd64.go diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_386.go b/vendor/github.com/creack/pty/ztypes_freebsd_386.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_freebsd_386.go rename to vendor/github.com/creack/pty/ztypes_freebsd_386.go diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go b/vendor/github.com/creack/pty/ztypes_freebsd_amd64.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_freebsd_amd64.go rename to vendor/github.com/creack/pty/ztypes_freebsd_amd64.go diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_arm.go b/vendor/github.com/creack/pty/ztypes_freebsd_arm.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_freebsd_arm.go rename to vendor/github.com/creack/pty/ztypes_freebsd_arm.go diff --git a/vendor/github.com/kr/pty/ztypes_mipsx.go b/vendor/github.com/creack/pty/ztypes_mipsx.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_mipsx.go rename to vendor/github.com/creack/pty/ztypes_mipsx.go diff --git a/vendor/github.com/kr/pty/ztypes_openbsd_386.go b/vendor/github.com/creack/pty/ztypes_openbsd_386.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_openbsd_386.go rename to vendor/github.com/creack/pty/ztypes_openbsd_386.go diff --git a/vendor/github.com/kr/pty/ztypes_openbsd_amd64.go b/vendor/github.com/creack/pty/ztypes_openbsd_amd64.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_openbsd_amd64.go rename to vendor/github.com/creack/pty/ztypes_openbsd_amd64.go diff --git a/vendor/github.com/kr/pty/ztypes_ppc64.go b/vendor/github.com/creack/pty/ztypes_ppc64.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_ppc64.go rename to vendor/github.com/creack/pty/ztypes_ppc64.go diff --git a/vendor/github.com/kr/pty/ztypes_ppc64le.go b/vendor/github.com/creack/pty/ztypes_ppc64le.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_ppc64le.go rename to vendor/github.com/creack/pty/ztypes_ppc64le.go diff --git a/vendor/github.com/creack/pty/ztypes_riscvx.go b/vendor/github.com/creack/pty/ztypes_riscvx.go new file mode 100644 index 0000000000..99eec8ecbe --- /dev/null +++ b/vendor/github.com/creack/pty/ztypes_riscvx.go @@ -0,0 +1,11 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs types.go + +// +build riscv riscv64 + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_s390x.go b/vendor/github.com/creack/pty/ztypes_s390x.go similarity index 100% rename from vendor/github.com/kr/pty/ztypes_s390x.go rename to vendor/github.com/creack/pty/ztypes_s390x.go diff --git a/vendor/github.com/kr/pty/go.mod b/vendor/github.com/kr/pty/go.mod deleted file mode 100644 index 4a275a51c1..0000000000 --- a/vendor/github.com/kr/pty/go.mod +++ /dev/null @@ -1 +0,0 @@ -module github.com/kr/pty