diff options
Diffstat (limited to 'internal')
-rw-r--r-- | internal/command/commandargs/shell.go | 13 | ||||
-rw-r--r-- | internal/sshd/session_test.go | 2 |
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, }, { |