summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbeck <>2019-01-24 01:50:41 +0000
committerbeck <>2019-01-24 01:50:41 +0000
commit354172b127820c0f48cb417d4d46746e2122f87b (patch)
tree545d5a4b3595d94dfb4578269077b87cbcf48afb /src
parent9e01a2b9fc249398f995e0d00bee55d7e3c31be0 (diff)
downloadopenbsd-354172b127820c0f48cb417d4d46746e2122f87b.tar.gz
openbsd-354172b127820c0f48cb417d4d46746e2122f87b.tar.bz2
openbsd-354172b127820c0f48cb417d4d46746e2122f87b.zip
move the extensions_seen into the handshake struct
ok jsing@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/s3_lib.c4
-rw-r--r--src/lib/libssl/ssl_locl.h5
-rw-r--r--src/lib/libssl/ssl_tlsext.c9
3 files changed, 12 insertions, 6 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c
index 496bf7394c..36142f0415 100644
--- a/src/lib/libssl/s3_lib.c
+++ b/src/lib/libssl/s3_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_lib.c,v 1.180 2019/01/23 18:24:40 beck Exp $ */ 1/* $OpenBSD: s3_lib.c,v 1.181 2019/01/24 01:50:41 beck 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 *
@@ -1606,6 +1606,8 @@ ssl3_clear(SSL *s)
1606 freezero(S3I(s)->hs_tls13.x25519_public, X25519_KEY_LENGTH); 1606 freezero(S3I(s)->hs_tls13.x25519_public, X25519_KEY_LENGTH);
1607 freezero(S3I(s)->hs_tls13.x25519_peer_public, X25519_KEY_LENGTH); 1607 freezero(S3I(s)->hs_tls13.x25519_peer_public, X25519_KEY_LENGTH);
1608 1608
1609 S3I(s)->hs.extensions_seen = 0;
1610
1609 rp = S3I(s)->rbuf.buf; 1611 rp = S3I(s)->rbuf.buf;
1610 wp = S3I(s)->wbuf.buf; 1612 wp = S3I(s)->wbuf.buf;
1611 rlen = S3I(s)->rbuf.len; 1613 rlen = S3I(s)->rbuf.len;
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h
index 8447484ec7..5d560f5935 100644
--- a/src/lib/libssl/ssl_locl.h
+++ b/src/lib/libssl/ssl_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_locl.h,v 1.231 2019/01/23 18:39:28 beck Exp $ */ 1/* $OpenBSD: ssl_locl.h,v 1.232 2019/01/24 01:50:41 beck 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 *
@@ -429,6 +429,9 @@ typedef struct ssl_handshake_st {
429 /* key_block is the record-layer key block for TLS 1.2 and earlier. */ 429 /* key_block is the record-layer key block for TLS 1.2 and earlier. */
430 int key_block_len; 430 int key_block_len;
431 unsigned char *key_block; 431 unsigned char *key_block;
432
433 /* Extensions seen in this handshake. */
434 uint32_t extensions_seen;
432} SSL_HANDSHAKE; 435} SSL_HANDSHAKE;
433 436
434typedef struct ssl_handshake_tls13_st { 437typedef struct ssl_handshake_tls13_st {
diff --git a/src/lib/libssl/ssl_tlsext.c b/src/lib/libssl/ssl_tlsext.c
index 2214a61ed3..35c764f646 100644
--- a/src/lib/libssl/ssl_tlsext.c
+++ b/src/lib/libssl/ssl_tlsext.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_tlsext.c,v 1.34 2019/01/23 18:39:28 beck Exp $ */ 1/* $OpenBSD: ssl_tlsext.c,v 1.35 2019/01/24 01:50:41 beck Exp $ */
2/* 2/*
3 * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> 4 * Copyright (c) 2017 Doug Hogan <doug@openbsd.org>
@@ -1675,11 +1675,12 @@ tlsext_parse(SSL *s, CBS *cbs, int *alert, int is_server, uint16_t msg_type)
1675 struct tls_extension_funcs *ext; 1675 struct tls_extension_funcs *ext;
1676 struct tls_extension *tlsext; 1676 struct tls_extension *tlsext;
1677 CBS extensions, extension_data; 1677 CBS extensions, extension_data;
1678 uint32_t extensions_seen = 0;
1679 uint16_t type; 1678 uint16_t type;
1680 size_t idx; 1679 size_t idx;
1681 uint16_t version; 1680 uint16_t version;
1682 1681
1682 S3I(s)->hs.extensions_seen = 0;
1683
1683 if (is_server) 1684 if (is_server)
1684 version = s->version; 1685 version = s->version;
1685 else 1686 else
@@ -1718,9 +1719,9 @@ tlsext_parse(SSL *s, CBS *cbs, int *alert, int is_server, uint16_t msg_type)
1718 } 1719 }
1719 1720
1720 /* Check for duplicate known extensions. */ 1721 /* Check for duplicate known extensions. */
1721 if ((extensions_seen & (1 << idx)) != 0) 1722 if ((S3I(s)->hs.extensions_seen & (1 << idx)) != 0)
1722 return 0; 1723 return 0;
1723 extensions_seen |= (1 << idx); 1724 S3I(s)->hs.extensions_seen |= (1 << idx);
1724 1725
1725 ext = tlsext_funcs(tlsext, is_server); 1726 ext = tlsext_funcs(tlsext, is_server);
1726 if (!ext->parse(s, &extension_data, alert)) 1727 if (!ext->parse(s, &extension_data, alert))