diff options
author | Hans Nilsson <[email protected]> | 2017-05-17 15:20:04 +0200 |
---|---|---|
committer | Hans Nilsson <[email protected]> | 2017-05-17 15:20:04 +0200 |
commit | 37fa1e9a948a1902e2484f7f15d418136284f97f (patch) | |
tree | 59a76e310daa368820e60f0aca86faf9bd07918c /lib/ssh/src/ssh_connection_handler.erl | |
parent | 21505aa6ccb27a533d814e83131c2961d47ba8ed (diff) | |
parent | 4d7ff0a8169141d18335638cf7c6e48d4c18cdf2 (diff) | |
download | otp-37fa1e9a948a1902e2484f7f15d418136284f97f.tar.gz otp-37fa1e9a948a1902e2484f7f15d418136284f97f.tar.bz2 otp-37fa1e9a948a1902e2484f7f15d418136284f97f.zip |
Merge branch 'hans/ssh/ext-info_bug_fixes'
Diffstat (limited to 'lib/ssh/src/ssh_connection_handler.erl')
-rw-r--r-- | lib/ssh/src/ssh_connection_handler.erl | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/ssh/src/ssh_connection_handler.erl b/lib/ssh/src/ssh_connection_handler.erl index 39bd54869f..6a6b9896cb 100644 --- a/lib/ssh/src/ssh_connection_handler.erl +++ b/lib/ssh/src/ssh_connection_handler.erl @@ -1701,15 +1701,18 @@ handle_ssh_msg_ext_info(#ssh_msg_ext_info{data=Data}, D0) -> lists:foldl(fun ext_info/2, D0, Data). -ext_info({"server-sig-algs",SigAlgs}, D0 = #data{ssh_params=#ssh{role=client}=Ssh0}) -> +ext_info({"server-sig-algs",SigAlgs}, D0 = #data{ssh_params=#ssh{role=client, + userauth_pubkeys=ClientSigAlgs}=Ssh0}) -> %% Make strings to eliminate risk of beeing bombed with odd strings that fills the atom table: SupportedAlgs = lists:map(fun erlang:atom_to_list/1, ssh_transport:supported_algorithms(public_key)), - Ssh = Ssh0#ssh{userauth_pubkeys = - [list_to_atom(SigAlg) || SigAlg <- string:tokens(SigAlgs,","), - %% length of SigAlg is implicitly checked by member: - lists:member(SigAlg, SupportedAlgs) - ]}, - D0#data{ssh_params = Ssh}; + ServerSigAlgs = [list_to_atom(SigAlg) || SigAlg <- string:tokens(SigAlgs,","), + %% length of SigAlg is implicitly checked by the comparison + %% in member/2: + lists:member(SigAlg, SupportedAlgs) + ], + CommonAlgs = [Alg || Alg <- ServerSigAlgs, + lists:member(Alg, ClientSigAlgs)], + D0#data{ssh_params = Ssh0#ssh{userauth_pubkeys = CommonAlgs} }; ext_info(_, D0) -> %% Not implemented |