aboutsummaryrefslogtreecommitdiff
path: root/kexgexs.c
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2022-02-23 18:16:45 +0000
committerEd Maste <emaste@FreeBSD.org>2022-02-23 18:16:45 +0000
commit85d1f2d493556f113b3f1f4b1800ace6656627ad (patch)
tree482b30833fad5a26845011fd0f2819ec9e21c165 /kexgexs.c
parent4f19900354cc6b4531038e294d8ad1d115118e9d (diff)
downloadsrc-85d1f2d493556f113b3f1f4b1800ace6656627ad.tar.gz
src-85d1f2d493556f113b3f1f4b1800ace6656627ad.zip
Vendor import of OpenSSH 8.9p1vendor/openssh/8.9p1
Diffstat (limited to 'kexgexs.c')
-rw-r--r--kexgexs.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/kexgexs.c b/kexgexs.c
index f0fbcb912543..72b444f6906b 100644
--- a/kexgexs.c
+++ b/kexgexs.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kexgexs.c,v 1.43 2021/01/31 22:55:29 djm Exp $ */
+/* $OpenBSD: kexgexs.c,v 1.44 2021/12/19 22:08:06 djm Exp $ */
/*
* Copyright (c) 2000 Niels Provos. All rights reserved.
* Copyright (c) 2001 Markus Friedl. All rights reserved.
@@ -194,8 +194,16 @@ input_kex_dh_gex_init(int type, u_int32_t seq, struct ssh *ssh)
(r = sshpkt_send(ssh)) != 0)
goto out;
- if ((r = kex_derive_keys(ssh, hash, hashlen, shared_secret)) == 0)
- r = kex_send_newkeys(ssh);
+ if ((r = kex_derive_keys(ssh, hash, hashlen, shared_secret)) != 0 ||
+ (r = kex_send_newkeys(ssh)) != 0)
+ goto out;
+
+ /* retain copy of hostkey used at initial KEX */
+ if (kex->initial_hostkey == NULL &&
+ (r = sshkey_from_private(server_host_public,
+ &kex->initial_hostkey)) != 0)
+ goto out;
+ /* success */
out:
explicit_bzero(hash, sizeof(hash));
DH_free(kex->dh);