summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2022-01-11 18:24:03 +0000
committerjsing <>2022-01-11 18:24:03 +0000
commitc48aae5cc38995b3b04baaf61334783d01a7772e (patch)
treee59b8ebcc8febc599ebb35378a840cfcafcb9bbb
parent3ce0ff225ddb5a7e88941e98c777d710c81515ea (diff)
downloadopenbsd-c48aae5cc38995b3b04baaf61334783d01a7772e.tar.gz
openbsd-c48aae5cc38995b3b04baaf61334783d01a7772e.tar.bz2
openbsd-c48aae5cc38995b3b04baaf61334783d01a7772e.zip
Use SSL_AD_INTERNAL_ERROR for non-decoding alerts when parsing keyshares.
ok tb@
-rw-r--r--src/lib/libssl/ssl_tlsext.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/lib/libssl/ssl_tlsext.c b/src/lib/libssl/ssl_tlsext.c
index 857527d943..7538efdc8c 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.106 2022/01/11 18:22:16 jsing Exp $ */ 1/* $OpenBSD: ssl_tlsext.c,v 1.107 2022/01/11 18:24:03 jsing 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>
@@ -1510,8 +1510,10 @@ tlsext_keyshare_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert)
1510 continue; 1510 continue;
1511 1511
1512 /* Decode and store the selected key share. */ 1512 /* Decode and store the selected key share. */
1513 if ((S3I(s)->hs.key_share = tls_key_share_new(group)) == NULL) 1513 if ((S3I(s)->hs.key_share = tls_key_share_new(group)) == NULL) {
1514 *alert = SSL_AD_INTERNAL_ERROR;
1514 return 0; 1515 return 0;
1516 }
1515 if (!tls_key_share_peer_public(S3I(s)->hs.key_share, 1517 if (!tls_key_share_peer_public(S3I(s)->hs.key_share,
1516 &key_exchange, NULL)) 1518 &key_exchange, NULL))
1517 return 0; 1519 return 0;
@@ -1577,10 +1579,14 @@ tlsext_keyshare_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert)
1577 if (!CBS_get_u16_length_prefixed(cbs, &key_exchange)) 1579 if (!CBS_get_u16_length_prefixed(cbs, &key_exchange))
1578 return 0; 1580 return 0;
1579 1581
1580 if (S3I(s)->hs.key_share == NULL) 1582 if (S3I(s)->hs.key_share == NULL) {
1583 *alert = SSL_AD_INTERNAL_ERROR;
1581 return 0; 1584 return 0;
1582 if (tls_key_share_group(S3I(s)->hs.key_share) != group) 1585 }
1586 if (tls_key_share_group(S3I(s)->hs.key_share) != group) {
1587 *alert = SSL_AD_INTERNAL_ERROR;
1583 return 0; 1588 return 0;
1589 }
1584 if (!tls_key_share_peer_public(S3I(s)->hs.key_share, 1590 if (!tls_key_share_peer_public(S3I(s)->hs.key_share,
1585 &key_exchange, NULL)) 1591 &key_exchange, NULL))
1586 return 0; 1592 return 0;