diff options
author | Ed Maste <emaste@FreeBSD.org> | 2022-02-23 18:16:45 +0000 |
---|---|---|
committer | Ed Maste <emaste@FreeBSD.org> | 2022-02-23 18:16:45 +0000 |
commit | 85d1f2d493556f113b3f1f4b1800ace6656627ad (patch) | |
tree | 482b30833fad5a26845011fd0f2819ec9e21c165 /kexgexs.c | |
parent | 4f19900354cc6b4531038e294d8ad1d115118e9d (diff) | |
download | src-85d1f2d493556f113b3f1f4b1800ace6656627ad.tar.gz src-85d1f2d493556f113b3f1f4b1800ace6656627ad.zip |
Vendor import of OpenSSH 8.9p1vendor/openssh/8.9p1
Diffstat (limited to 'kexgexs.c')
-rw-r--r-- | kexgexs.c | 14 |
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); |