diff options
author | Patrick Bajao <ebajao@gitlab.com> | 2021-07-26 05:50:50 +0000 |
---|---|---|
committer | Patrick Bajao <ebajao@gitlab.com> | 2021-07-26 05:50:50 +0000 |
commit | 757aa7c0e0b8733c75c744f188b0136c1fe1830f (patch) | |
tree | fa00ccc82a3b2d57b13a53a6cb09378848f64324 | |
parent | e01ebb3bfa7afc0d2f26dd2f4bbadce56f325722 (diff) | |
parent | f2c8eecc2c4b195e9ba0bc129f5cbd5c53a04c89 (diff) | |
download | gitlab-shell-13-19-stable.tar.gz |
Merge branch 'security-300265-13-19' into '13-19-stable'v13.19.113-19-stable
Modify regex to prevent partial matches
See merge request gitlab-org/security/gitlab-shell!7
-rw-r--r-- | CHANGELOG | 4 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | internal/command/commandargs/command_args_test.go | 9 | ||||
-rw-r--r-- | internal/command/commandargs/shell.go | 4 |
4 files changed, 14 insertions, 5 deletions
@@ -1,3 +1,7 @@ +v13.19.1 + +- Modify regex to prevent partial matches + v13.19.0 - Don't finish the opentracing span early !466 @@ -1 +1 @@ -13.19.0 +13.19.1 diff --git a/internal/command/commandargs/command_args_test.go b/internal/command/commandargs/command_args_test.go index 0329c82..7b9f0ad 100644 --- a/internal/command/commandargs/command_args_test.go +++ b/internal/command/commandargs/command_args_test.go @@ -23,14 +23,19 @@ func TestParseSuccess(t *testing.T) { env: sshenv.Env{IsSSHConnection: true, RemoteAddr: "1"}, arguments: []string{}, expectedArgs: &Shell{Arguments: []string{}, SshArgs: []string{}, CommandType: Discover, Env: sshenv.Env{IsSSHConnection: true, RemoteAddr: "1"}}, - }, - { + }, { desc: "It finds the key id in any passed arguments", executable: &executable.Executable{Name: executable.GitlabShell}, env: sshenv.Env{IsSSHConnection: true, RemoteAddr: "1"}, arguments: []string{"hello", "key-123"}, expectedArgs: &Shell{Arguments: []string{"hello", "key-123"}, SshArgs: []string{}, CommandType: Discover, GitlabKeyId: "123", Env: sshenv.Env{IsSSHConnection: true, RemoteAddr: "1"}}, }, { + desc: "It finds the key id only if the argument is of <key-id> format", + executable: &executable.Executable{Name: executable.GitlabShell}, + env: sshenv.Env{IsSSHConnection: true, RemoteAddr: "1"}, + arguments: []string{"hello", "username-key-123"}, + expectedArgs: &Shell{Arguments: []string{"hello", "username-key-123"}, SshArgs: []string{}, CommandType: Discover, GitlabUsername: "key-123", Env: sshenv.Env{IsSSHConnection: true, RemoteAddr: "1"}}, + }, { desc: "It finds the username in any passed arguments", executable: &executable.Executable{Name: executable.GitlabShell}, env: sshenv.Env{IsSSHConnection: true, RemoteAddr: "1"}, diff --git a/internal/command/commandargs/shell.go b/internal/command/commandargs/shell.go index 9cf6720..589f58d 100644 --- a/internal/command/commandargs/shell.go +++ b/internal/command/commandargs/shell.go @@ -20,8 +20,8 @@ const ( ) var ( - whoKeyRegex = regexp.MustCompile(`\bkey-(?P<keyid>\d+)\b`) - whoUsernameRegex = regexp.MustCompile(`\busername-(?P<username>\S+)\b`) + whoKeyRegex = regexp.MustCompile(`\Akey-(?P<keyid>\d+)\z`) + whoUsernameRegex = regexp.MustCompile(`\Ausername-(?P<username>\S+)\z`) ) type Shell struct { |