summaryrefslogtreecommitdiffstats
path: root/ssh_api.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 08:19:51 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 08:19:51 +0000
commit19b39815163d510f7ed52bedab507fa72202c15a (patch)
tree30ef0de18a35492922fad0066068ae50ad90a36c /ssh_api.c
parentAdding upstream version 1:9.6p1. (diff)
downloadopenssh-19b39815163d510f7ed52bedab507fa72202c15a.tar.xz
openssh-19b39815163d510f7ed52bedab507fa72202c15a.zip
Adding upstream version 1:9.7p1.upstream/1%9.7p1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ssh_api.c')
-rw-r--r--ssh_api.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/ssh_api.c b/ssh_api.c
index d3c6617..fadf2f4 100644
--- a/ssh_api.c
+++ b/ssh_api.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh_api.c,v 1.27 2021/04/03 06:18:41 djm Exp $ */
+/* $OpenBSD: ssh_api.c,v 1.28 2024/01/09 21:39:14 djm Exp $ */
/*
* Copyright (c) 2012 Markus Friedl. All rights reserved.
*
@@ -82,6 +82,7 @@ int
ssh_init(struct ssh **sshp, int is_server, struct kex_params *kex_params)
{
char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT };
+ char *populated[PROPOSAL_MAX];
struct ssh *ssh;
char **proposal;
static int called;
@@ -99,10 +100,19 @@ ssh_init(struct ssh **sshp, int is_server, struct kex_params *kex_params)
/* Initialize key exchange */
proposal = kex_params ? kex_params->proposal : myproposal;
- if ((r = kex_ready(ssh, proposal)) != 0) {
+ kex_proposal_populate_entries(ssh, populated,
+ proposal[PROPOSAL_KEX_ALGS],
+ proposal[PROPOSAL_ENC_ALGS_CTOS],
+ proposal[PROPOSAL_MAC_ALGS_CTOS],
+ proposal[PROPOSAL_COMP_ALGS_CTOS],
+ proposal[PROPOSAL_SERVER_HOST_KEY_ALGS]);
+ r = kex_ready(ssh, populated);
+ kex_proposal_free_entries(populated);
+ if (r != 0) {
ssh_free(ssh);
return r;
}
+
ssh->kex->server = is_server;
if (is_server) {
#ifdef WITH_OPENSSL