summaryrefslogtreecommitdiff
path: root/kexecdh.c
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2018-12-27 03:25:24 +0000
committerDamien Miller <djm@mindrot.org>2018-12-27 14:38:22 +1100
commit0a843d9a0e805f14653a555f5c7a8ba99d62c12d (patch)
tree481f36e9fd1918be5449e369a97c086a1a8d2432 /kexecdh.c
parent434b587afe41c19391821e7392005068fda76248 (diff)
upstream: move client/server SSH-* banners to buffers under
ssh->kex and factor out the banner exchange. This eliminates some common code from the client and server. Also be more strict about handling \r characters - these should only be accepted immediately before \n (pointed out by Jann Horn). Inspired by a patch from Markus Schmidt. (lots of) feedback and ok markus@ OpenBSD-Commit-ID: 1cc7885487a6754f63641d7d3279b0941890275b
Diffstat (limited to 'kexecdh.c')
-rw-r--r--kexecdh.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/kexecdh.c b/kexecdh.c
index 2a4fec6b1..4380427ea 100644
--- a/kexecdh.c
+++ b/kexecdh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexecdh.c,v 1.6 2015/01/19 20:16:15 markus Exp $ */ 1/* $OpenBSD: kexecdh.c,v 1.7 2018/12/27 03:25:25 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * Copyright (c) 2010 Damien Miller. All rights reserved. 4 * Copyright (c) 2010 Damien Miller. All rights reserved.
@@ -50,8 +50,8 @@ int
50kex_ecdh_hash( 50kex_ecdh_hash(
51 int hash_alg, 51 int hash_alg,
52 const EC_GROUP *ec_group, 52 const EC_GROUP *ec_group,
53 const char *client_version_string, 53 const struct sshbuf *client_version,
54 const char *server_version_string, 54 const struct sshbuf *server_version,
55 const u_char *ckexinit, size_t ckexinitlen, 55 const u_char *ckexinit, size_t ckexinitlen,
56 const u_char *skexinit, size_t skexinitlen, 56 const u_char *skexinit, size_t skexinitlen,
57 const u_char *serverhostkeyblob, size_t sbloblen, 57 const u_char *serverhostkeyblob, size_t sbloblen,
@@ -67,8 +67,8 @@ kex_ecdh_hash(
67 return SSH_ERR_INVALID_ARGUMENT; 67 return SSH_ERR_INVALID_ARGUMENT;
68 if ((b = sshbuf_new()) == NULL) 68 if ((b = sshbuf_new()) == NULL)
69 return SSH_ERR_ALLOC_FAIL; 69 return SSH_ERR_ALLOC_FAIL;
70 if ((r = sshbuf_put_cstring(b, client_version_string)) != 0 || 70 if ((r = sshbuf_put_stringb(b, client_version)) < 0 ||
71 (r = sshbuf_put_cstring(b, server_version_string)) != 0 || 71 (r = sshbuf_put_stringb(b, server_version)) < 0 ||
72 /* kexinit messages: fake header: len+SSH2_MSG_KEXINIT */ 72 /* kexinit messages: fake header: len+SSH2_MSG_KEXINIT */
73 (r = sshbuf_put_u32(b, ckexinitlen+1)) != 0 || 73 (r = sshbuf_put_u32(b, ckexinitlen+1)) != 0 ||
74 (r = sshbuf_put_u8(b, SSH2_MSG_KEXINIT)) != 0 || 74 (r = sshbuf_put_u8(b, SSH2_MSG_KEXINIT)) != 0 ||