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/e2e/container/proxy_signal_test.go b/e2e/container/proxy_signal_test.go index 3e6149c918..c65da0cfc1 100644 --- a/e2e/container/proxy_signal_test.go +++ b/e2e/container/proxy_signal_test.go @@ -7,8 +7,8 @@ import ( "testing" "time" + "github.com/creack/pty" "github.com/docker/cli/e2e/internal/fixtures" - "github.com/kr/pty" "gotest.tools/assert" "gotest.tools/icmd" "gotest.tools/poll" diff --git a/vendor.conf b/vendor.conf index 4158bf34b0..98689adeda 100755 --- a/vendor.conf +++ b/vendor.conf @@ -11,6 +11,7 @@ github.com/containerd/ttrpc f02858b1457c5ca3aaec3a0803eb github.com/containerd/typeurl 2a93cfde8c20b23de8eb84a5adbc234ddf7a9e8d github.com/coreos/etcd d57e8b8d97adfc4a6c224fe116714bf1a1f3beb9 # v3.3.12 github.com/cpuguy83/go-md2man 20f5889cbdc3c73dbd2862796665e7c465ade7d1 # v1.0.8 +github.com/creack/pty 2769f65a3a94eb8f876f44a0459d24ae7ad2e488 # v1.1.7 github.com/davecgh/go-spew 8991bc29aa16c548c550c7ff78260e27b9ab7c73 # v1.1.1 github.com/dgrijalva/jwt-go a2c85815a77d0f951e33ba4db5ae93629a1530af github.com/docker/compose-on-kubernetes cc4914dfd1b6684a9750a59f3613fc0a95291824 # v0.4.23 @@ -46,7 +47,6 @@ github.com/inconshreveable/mousetrap 76626ae9c91c4f2a10f34cad8ce8 github.com/jaguilar/vt100 ad4c4a5743050fb7f88ce968dca9422f72a0e3f2 git://github.com/tonistiigi/vt100.git github.com/json-iterator/go 0ff49de124c6f76f8494e194af75bde0f1a49a29 # 1.1.6 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/matttproud/golang_protobuf_extensions c12348ce28de40eed0136aa2b644d0ee0650e56c # v1.0.1 github.com/Microsoft/go-winio 84b4ab48a50763fe7b3abcef38e5205c12027fac 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