Handle SSH keys that have multiple spaces between each marker
Notice what happens when a user adds a key with a space in between: ``` irb(main):004:0> 'ssh-rsa foobar'.split(/ /) => ["ssh-rsa", "", "foobar"] ``` This would cause gitlab-shell to receive a blank argument for the actual key, leading to users unable to login.
This commit is contained in:
parent
ced322c5f6
commit
54849afc6c
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Handle SSH keys that have multiple spaces between each marker
|
||||
merge_request:
|
||||
author:
|
|
@ -35,7 +35,7 @@ module Gitlab
|
|||
end
|
||||
|
||||
def strip_key(key)
|
||||
key.split(/ /)[0, 2].join(' ')
|
||||
key.split(/[ ]+/)[0, 2].join(' ')
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -69,6 +69,15 @@ describe Gitlab::Shell, lib: true do
|
|||
expect(io).to have_received(:puts).with("key-42\tssh-rsa foo")
|
||||
end
|
||||
|
||||
it 'handles multiple spaces in the key' do
|
||||
io = spy(:io)
|
||||
adder = described_class.new(io)
|
||||
|
||||
adder.add_key('key-42', "ssh-rsa foo")
|
||||
|
||||
expect(io).to have_received(:puts).with("key-42\tssh-rsa foo")
|
||||
end
|
||||
|
||||
it 'raises an exception if the key contains a tab' do
|
||||
expect do
|
||||
described_class.new(StringIO.new).add_key('key-42', "ssh-rsa\tfoobar")
|
||||
|
|
Loading…
Reference in New Issue