From be1ce74dc528d8b7aa51346e6d1eca6d1ad974b1 Mon Sep 17 00:00:00 2001 From: Max Jonas Werner <mail@makk.es> Date: Sun, 7 Nov 2021 15:06:30 +0100 Subject: [PATCH] fix: trim CRLF from password read from stdin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bufio's reader.ReadString includes any CRLF characters and we don't want these in the resulting token because this leads to errors in the authentication like this: ``` ✗ failed to get Git repository "https://github.com/kingdon-ci/jenkins-infra": Get "https://api.github.com/repos/kingdon-ci/jenkins-infra": net/http: invalid header field value "Bearer gho_NNNNNsecrettokenMMMMM\n" for key Authorization ``` Signed-off-by: Max Jonas Werner <mail@makk.es> --- cmd/flux/main.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cmd/flux/main.go b/cmd/flux/main.go index 86cfba76..6b00e4b0 100644 --- a/cmd/flux/main.go +++ b/cmd/flux/main.go @@ -22,6 +22,7 @@ import ( "log" "os" "path/filepath" + "strings" "time" "github.com/spf13/cobra" @@ -171,6 +172,9 @@ func homeDir() string { return os.Getenv("USERPROFILE") // windows } +// readPasswordFromStdin reads a password from stdin and returns the input +// with trailing newline and/or carriage return removed. It also makes sure that terminal +// echoing is turned off if stdin is a terminal. func readPasswordFromStdin(prompt string) (string, error) { var out string var err error @@ -187,5 +191,5 @@ func readPasswordFromStdin(prompt string) (string, error) { return "", fmt.Errorf("could not read from stdin: %w", err) } fmt.Println() - return out, nil + return strings.TrimRight(out, "\r\n"), nil } -- GitLab