diff options
author | deraadt <> | 2020-05-22 16:11:23 +0000 |
---|---|---|
committer | deraadt <> | 2020-05-22 16:11:23 +0000 |
commit | e3b013782277e76aed5bd5e586a0cbab98ef90e7 (patch) | |
tree | bf00683968bdfa77a46aa495e421b707ff08679a /src | |
parent | cfa7c7d8ea22f50276f89f901780ab7885f495a4 (diff) | |
download | openbsd-e3b013782277e76aed5bd5e586a0cbab98ef90e7.tar.gz openbsd-e3b013782277e76aed5bd5e586a0cbab98ef90e7.tar.bz2 openbsd-e3b013782277e76aed5bd5e586a0cbab98ef90e7.zip |
sockaddr should be sockaddr_storage, otherwise "openssl s_client -6 -dtls1"
(gurn) copies getsockname() retrieves a truncated result and 14 bytes of
stack garbage get copied onwards.
ok tb
Diffstat (limited to 'src')
-rw-r--r-- | src/usr.bin/openssl/s_client.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/usr.bin/openssl/s_client.c b/src/usr.bin/openssl/s_client.c index 27516ae5db..88b098286a 100644 --- a/src/usr.bin/openssl/s_client.c +++ b/src/usr.bin/openssl/s_client.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s_client.c,v 1.44 2020/04/26 01:59:27 inoguchi Exp $ */ | 1 | /* $OpenBSD: s_client.c,v 1.45 2020/05/22 16:11:23 deraadt Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -331,7 +331,7 @@ s_client_main(int argc, char **argv) | |||
331 | const char *groups_in = NULL; | 331 | const char *groups_in = NULL; |
332 | char *sess_in = NULL; | 332 | char *sess_in = NULL; |
333 | char *sess_out = NULL; | 333 | char *sess_out = NULL; |
334 | struct sockaddr peer; | 334 | struct sockaddr_storage peer; |
335 | int peerlen = sizeof(peer); | 335 | int peerlen = sizeof(peer); |
336 | int enable_timeouts = 0; | 336 | int enable_timeouts = 0; |
337 | long socket_mtu = 0; | 337 | long socket_mtu = 0; |
@@ -776,7 +776,8 @@ re_start: | |||
776 | if (SSL_version(con) == DTLS1_VERSION) { | 776 | if (SSL_version(con) == DTLS1_VERSION) { |
777 | 777 | ||
778 | sbio = BIO_new_dgram(s, BIO_NOCLOSE); | 778 | sbio = BIO_new_dgram(s, BIO_NOCLOSE); |
779 | if (getsockname(s, &peer, (void *) &peerlen) == -1) { | 779 | if (getsockname(s, (struct sockaddr *)&peer, |
780 | (void *)&peerlen) == -1) { | ||
780 | BIO_printf(bio_err, "getsockname:errno=%d\n", | 781 | BIO_printf(bio_err, "getsockname:errno=%d\n", |
781 | errno); | 782 | errno); |
782 | shutdown(s, SHUT_RD); | 783 | shutdown(s, SHUT_RD); |