From efcab1a52eda5485653d7d1b4c8678d930667dec Mon Sep 17 00:00:00 2001 From: Adam Langley Date: Mon, 16 Jan 2017 16:40:45 -0800 Subject: [PATCH] ssh/terminal: consume data before checking for an error. According to the io.Reader docs, Alex had it right the first time. (See discussion on https://golang.org/cl/25355.) Change-Id: Ib6fb9dfb99009e034263574e82d7e9d4828df38f Reviewed-on: https://go-review.googlesource.com/35242 TryBot-Result: Gobot Gobot Run-TryBot: Adam Langley Reviewed-by: Alex Brainman Reviewed-by: Adam Langley --- terminal.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/terminal.go b/terminal.go index d35e8b1..18379a9 100644 --- a/terminal.go +++ b/terminal.go @@ -930,12 +930,6 @@ func readPasswordLine(reader io.Reader) ([]byte, error) { for { n, err := reader.Read(buf[:]) - if err != nil { - if err == io.EOF && len(ret) > 0 { - return ret, nil - } - return ret, err - } if n > 0 { switch buf[0] { case '\n': @@ -945,6 +939,13 @@ func readPasswordLine(reader io.Reader) ([]byte, error) { default: ret = append(ret, buf[0]) } + continue + } + if err != nil { + if err == io.EOF && len(ret) > 0 { + return ret, nil + } + return ret, err } } }