diff options
author | beck <> | 2019-01-24 01:50:41 +0000 |
---|---|---|
committer | beck <> | 2019-01-24 01:50:41 +0000 |
commit | 354172b127820c0f48cb417d4d46746e2122f87b (patch) | |
tree | 545d5a4b3595d94dfb4578269077b87cbcf48afb /src | |
parent | 9e01a2b9fc249398f995e0d00bee55d7e3c31be0 (diff) | |
download | openbsd-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.c | 4 | ||||
-rw-r--r-- | src/lib/libssl/ssl_locl.h | 5 | ||||
-rw-r--r-- | src/lib/libssl/ssl_tlsext.c | 9 |
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 | ||
434 | typedef struct ssl_handshake_tls13_st { | 437 | typedef 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)) |