From 4a4ca44b199d034a225468902137bf6b23c1ce0d Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Thu, 18 Oct 2018 13:50:55 +0200 Subject: [PATCH] kex: Honor more host key algorithms than the first one (ssh-ed25519) The code as it was written used only the first algorithm from preferred_hostkeys array and compared it with the list returned from the known hosts. This commit is fixing the code so we actually compare each of the algorithms from both of the lists and returns the intersection. Signed-off-by: Jakub Jelen Reviewed-by: Andreas Schneider (cherry picked from commit c1a8c41c5daf79e37aa5fde67dd94c8596e81102) --- src/kex.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/kex.c b/src/kex.c index a59374c5..50e01850 100644 --- a/src/kex.c +++ b/src/kex.c @@ -626,7 +626,7 @@ static char *ssh_client_select_hostkeys(ssh_session session) for (i = 0; preferred_hostkeys[i] != NULL; ++i) { for (it = ssh_list_get_iterator(algo_list); it != NULL; - it = ssh_list_get_iterator(algo_list)) { + it = it->next) { const char *algo = ssh_iterator_value(const char *, it); int cmp; int ok; @@ -646,8 +646,6 @@ static char *ssh_client_select_hostkeys(ssh_session session) needcomma = 1; } } - - ssh_list_remove(algo_list, it); } } ssh_list_free(algo_list);