]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: adapt ssh_api.c code for kex-strict
authordjm@openbsd.org <djm@openbsd.org>
Tue, 9 Jan 2024 21:39:14 +0000 (21:39 +0000)
committerDamien Miller <djm@mindrot.org>
Tue, 9 Jan 2024 22:24:06 +0000 (09:24 +1100)
from markus@ ok me

OpenBSD-Commit-ID: 4d9f256852af2a5b882b12cae9447f8f00f933ac

ssh_api.c

index d3c6617616bdecbaf2c14858f32922298fe10893..fadf2f4b10d92f2371739152367006dfd2c6c726 100644 (file)
--- 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