summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-10-09 11:38:59 +0000
committerDouwe Maan <douwe@gitlab.com>2015-10-09 11:38:59 +0000
commitdf3ae4ef134e32ea2f5421c163a65784fd41a6db (patch)
tree7375f761afc8a487a193affd387fa4903f2387e5
parent192dd58d0358ba4c0993170589c9ed250e1dc547 (diff)
parent69b41ba04331e95739b25c77b3f5f198c0e64bae (diff)
downloadgitlab-ce-df3ae4ef134e32ea2f5421c163a65784fd41a6db.tar.gz
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.rb3
-rw-r--r--spec/lib/gitlab/backend/shell_spec.rb13
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