From fa7b922e7a8026d800fc9bfb7a345957e77c8ac4 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Wed, 17 Apr 2019 11:49:02 +0200 Subject: [PATCH] main.go: don't set TTY interface from tty.Open() in case open fails If tty.Open fails the return tty is still nil, but the interface type will be set; meaning in go that `TTY == nil` will always be false. fix #7506 --- main.go | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/main.go b/main.go index 51359f407..9ff290f2f 100644 --- a/main.go +++ b/main.go @@ -186,21 +186,19 @@ func wrappedMain() int { return 1 } } else { - var TTY packer.TTY - if !inPlugin { - var err error - TTY, err = tty.Open() - if err != nil { - fmt.Fprintf(os.Stderr, "No tty available: %s\n", err) - } else { - defer TTY.Close() - } - } - ui = &packer.BasicUi{ + basicUi := &packer.BasicUi{ Reader: os.Stdin, Writer: os.Stdout, ErrorWriter: os.Stdout, - TTY: TTY, + } + ui = basicUi + if !inPlugin { + if TTY, err := tty.Open(); err != nil { + fmt.Fprintf(os.Stderr, "No tty available: %s\n", err) + } else { + basicUi.TTY = TTY + defer TTY.Close() + } } } // Create the CLI meta