summaryrefslogtreecommitdiff
path: root/internal/command
diff options
context:
space:
mode:
authorIgor Drozdov <idrozdov@gitlab.com>2021-02-05 17:09:06 +0000
committerNick Thomas <nick@gitlab.com>2021-02-05 17:09:06 +0000
commit15043211087b6f35cc819e95746ce62325ce5ad1 (patch)
treeb0763f75a5bfe2ebe1c284d2d7777b6689523fe5 /internal/command
parent69fc715f978a7335fcc326cf033624c37173d861 (diff)
downloadgitlab-shell-15043211087b6f35cc819e95746ce62325ce5ad1.tar.gz
Read limited input for yes answer
Diffstat (limited to 'internal/command')
-rw-r--r--internal/command/twofactorrecover/twofactorrecover.go5
-rw-r--r--internal/command/twofactorrecover/twofactorrecover_test.go8
2 files changed, 12 insertions, 1 deletions
diff --git a/internal/command/twofactorrecover/twofactorrecover.go b/internal/command/twofactorrecover/twofactorrecover.go
index f0a9e7b..f5a700a 100644
--- a/internal/command/twofactorrecover/twofactorrecover.go
+++ b/internal/command/twofactorrecover/twofactorrecover.go
@@ -3,6 +3,7 @@ package twofactorrecover
import (
"context"
"fmt"
+ "io"
"strings"
"gitlab.com/gitlab-org/gitlab-shell/internal/command/commandargs"
@@ -11,6 +12,8 @@ import (
"gitlab.com/gitlab-org/gitlab-shell/internal/gitlabnet/twofactorrecover"
)
+const readerLimit = 1024
+
type Command struct {
Config *config.Config
Args *commandargs.Shell
@@ -34,7 +37,7 @@ func (c *Command) canContinue() bool {
fmt.Fprintln(c.ReadWriter.Out, question)
var answer string
- fmt.Fscanln(c.ReadWriter.In, &answer)
+ fmt.Fscanln(io.LimitReader(c.ReadWriter.In, readerLimit), &answer)
return answer == "yes"
}
diff --git a/internal/command/twofactorrecover/twofactorrecover_test.go b/internal/command/twofactorrecover/twofactorrecover_test.go
index 92e3779..a53e055 100644
--- a/internal/command/twofactorrecover/twofactorrecover_test.go
+++ b/internal/command/twofactorrecover/twofactorrecover_test.go
@@ -6,6 +6,7 @@ import (
"encoding/json"
"io/ioutil"
"net/http"
+ "strings"
"testing"
"github.com/stretchr/testify/require"
@@ -114,6 +115,13 @@ func TestExecute(t *testing.T) {
expectedOutput: question +
"New recovery codes have *not* been generated. Existing codes will remain valid.\n",
},
+ {
+ desc: "With some other answer",
+ arguments: &commandargs.Shell{},
+ answer: strings.Repeat("yes", 1024),
+ expectedOutput: question +
+ "New recovery codes have *not* been generated. Existing codes will remain valid.\n",
+ },
}
for _, tc := range testCases {