summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2021-09-27 19:28:06 +0100
committerNick Thomas <nick@gitlab.com>2021-09-27 20:25:10 +0100
commit5564ea9ca23217687a6e6c091f3b4fc11e375a2f (patch)
treeb58611c4552934ae0412092622b8af20326a7c0f /internal
parenta1ae9e5ad2900d512a58ce64f4ad0f02769c3edd (diff)
downloadgitlab-shell-5564ea9ca23217687a6e6c091f3b4fc11e375a2f.tar.gz
Don't swallow an error parsing SSH_ORIGINAL_COMMAND
Diffstat (limited to 'internal')
-rw-r--r--internal/command/commandargs/shell.go13
-rw-r--r--internal/sshd/session_test.go2
2 files changed, 5 insertions, 10 deletions
diff --git a/internal/command/commandargs/shell.go b/internal/command/commandargs/shell.go
index 589f58d..7a76be5 100644
--- a/internal/command/commandargs/shell.go
+++ b/internal/command/commandargs/shell.go
@@ -1,7 +1,7 @@
package commandargs
import (
- "errors"
+ "fmt"
"regexp"
"github.com/mattn/go-shellwords"
@@ -49,21 +49,16 @@ func (s *Shell) GetArguments() []string {
func (s *Shell) validate() error {
if !s.Env.IsSSHConnection {
- return errors.New("Only SSH allowed")
+ return fmt.Errorf("Only SSH allowed")
}
- if !s.isValidSSHCommand() {
- return errors.New("Invalid SSH command")
+ if err := s.ParseCommand(s.Env.OriginalCommand); err != nil {
+ return fmt.Errorf("Invalid SSH command: %w", err)
}
return nil
}
-func (s *Shell) isValidSSHCommand() bool {
- err := s.ParseCommand(s.Env.OriginalCommand)
- return err == nil
-}
-
func (s *Shell) parseWho() {
for _, argument := range s.Arguments {
if keyId := tryParseKeyId(argument); keyId != "" {
diff --git a/internal/sshd/session_test.go b/internal/sshd/session_test.go
index b014c0c..43d6aca 100644
--- a/internal/sshd/session_test.go
+++ b/internal/sshd/session_test.go
@@ -145,7 +145,7 @@ func TestHandleShell(t *testing.T) {
{
desc: "fails to parse command",
cmd: `\`,
- errMsg: "Failed to parse command: Invalid SSH command\nUnknown command: \\\n",
+ errMsg: "Failed to parse command: Invalid SSH command: invalid command line string\nUnknown command: \\\n",
gitlabKeyId: "root",
expectedExitCode: 128,
}, {