summaryrefslogtreecommitdiff
path: root/kexgexc.c
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2019-01-21 09:54:11 +0000
committerDamien Miller <djm@mindrot.org>2019-01-21 21:47:28 +1100
commit7be8572b32a15d5c3dba897f252e2e04e991c307 (patch)
tree449782dce059d2eb8d28aaa3baeaedd876b915a2 /kexgexc.c
parent803178bd5da7e72be94ba5b4c4c196d4b542da4d (diff)
upstream: Make sshpkt_get_bignum2() allocate the bignum it is
parsing rather than make the caller do it. Saves a lot of boilerplate code. from markus@ ok djm@ OpenBSD-Commit-ID: 576bf784f9a240f5a1401f7005364e59aed3bce9
Diffstat (limited to 'kexgexc.c')
-rw-r--r--kexgexc.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/kexgexc.c b/kexgexc.c
index f2be35ab2..dec01fd4f 100644
--- a/kexgexc.c
+++ b/kexgexc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexgexc.c,v 1.29 2018/12/27 03:25:25 djm Exp $ */ 1/* $OpenBSD: kexgexc.c,v 1.30 2019/01/21 09:54:11 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Niels Provos. All rights reserved. 3 * Copyright (c) 2000 Niels Provos. All rights reserved.
4 * Copyright (c) 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2001 Markus Friedl. All rights reserved.
@@ -100,13 +100,8 @@ input_kex_dh_gex_group(int type, u_int32_t seq, struct ssh *ssh)
100 100
101 debug("got SSH2_MSG_KEX_DH_GEX_GROUP"); 101 debug("got SSH2_MSG_KEX_DH_GEX_GROUP");
102 102
103 if ((p = BN_new()) == NULL || 103 if ((r = sshpkt_get_bignum2(ssh, &p)) != 0 ||
104 (g = BN_new()) == NULL) { 104 (r = sshpkt_get_bignum2(ssh, &g)) != 0 ||
105 r = SSH_ERR_ALLOC_FAIL;
106 goto out;
107 }
108 if ((r = sshpkt_get_bignum2(ssh, p)) != 0 ||
109 (r = sshpkt_get_bignum2(ssh, g)) != 0 ||
110 (r = sshpkt_get_end(ssh)) != 0) 105 (r = sshpkt_get_end(ssh)) != 0)
111 goto out; 106 goto out;
112 if ((bits = BN_num_bits(p)) < 0 || 107 if ((bits = BN_num_bits(p)) < 0 ||
@@ -177,13 +172,8 @@ input_kex_dh_gex_reply(int type, u_int32_t seq, struct ssh *ssh)
177 r = SSH_ERR_SIGNATURE_INVALID; 172 r = SSH_ERR_SIGNATURE_INVALID;
178 goto out; 173 goto out;
179 } 174 }
180 /* DH parameter f, server public DH key */ 175 /* DH parameter f, server public DH key, signed H */
181 if ((dh_server_pub = BN_new()) == NULL) { 176 if ((r = sshpkt_get_bignum2(ssh, &dh_server_pub)) != 0 ||
182 r = SSH_ERR_ALLOC_FAIL;
183 goto out;
184 }
185 /* signed H */
186 if ((r = sshpkt_get_bignum2(ssh, dh_server_pub)) != 0 ||
187 (r = sshpkt_get_string(ssh, &signature, &slen)) != 0 || 177 (r = sshpkt_get_string(ssh, &signature, &slen)) != 0 ||
188 (r = sshpkt_get_end(ssh)) != 0) 178 (r = sshpkt_get_end(ssh)) != 0)
189 goto out; 179 goto out;