diff options
author | Douwe Maan <douwe@gitlab.com> | 2015-10-09 14:38:59 +0300 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2015-10-09 14:38:59 +0300 |
commit | df3ae4ef134e32ea2f5421c163a65784fd41a6db (patch) | |
tree | 7375f761afc8a487a193affd387fa4903f2387e5 | |
parent | 192dd58d0358ba4c0993170589c9ed250e1dc547 (diff) | |
parent | 69b41ba04331e95739b25c77b3f5f198c0e64bae (diff) |
Merge branch 'rs-issue-2970' into 'master'
Normalize space-like characters in keys before output to gitlab-shell
gitlab-shell expects only one tab separator per key, and an SSH key with
a tab character in the comment, for example, would break things.
Closes #2970
See merge request !1552
-rw-r--r-- | lib/gitlab/backend/shell.rb | 3 | ||||
-rw-r--r-- | spec/lib/gitlab/backend/shell_spec.rb | 13 |
2 files changed, 15 insertions, 1 deletions
diff --git a/lib/gitlab/backend/shell.rb b/lib/gitlab/backend/shell.rb index 14ee4701e7b..01b8bda05c6 100644 --- a/lib/gitlab/backend/shell.rb +++ b/lib/gitlab/backend/shell.rb @@ -4,7 +4,8 @@ module Gitlab class KeyAdder < Struct.new(:io) def add_key(id, key) - io.puts("#{id}\t#{key.strip}") + key.gsub!(/[[:space:]]+/, ' ').strip! + io.puts("#{id}\t#{key}") end end diff --git a/spec/lib/gitlab/backend/shell_spec.rb b/spec/lib/gitlab/backend/shell_spec.rb index b6d04330599..b60e23454d6 100644 --- a/spec/lib/gitlab/backend/shell_spec.rb +++ b/spec/lib/gitlab/backend/shell_spec.rb @@ -15,4 +15,17 @@ describe Gitlab::Shell do it { is_expected.to respond_to :fork_repository } it { expect(gitlab_shell.url_to_repo('diaspora')).to eq(Gitlab.config.gitlab_shell.ssh_path_prefix + "diaspora.git") } + + describe Gitlab::Shell::KeyAdder do + describe '#add_key' do + it 'normalizes space characters in the key' do + io = spy + adder = described_class.new(io) + + adder.add_key('key-42', "sha-rsa foo\tbar\tbaz") + + expect(io).to have_received(:puts).with("key-42\tsha-rsa foo bar baz") + end + end + end end |