diff options
author | jsing <> | 2022-01-11 18:24:03 +0000 |
---|---|---|
committer | jsing <> | 2022-01-11 18:24:03 +0000 |
commit | c48aae5cc38995b3b04baaf61334783d01a7772e (patch) | |
tree | e59b8ebcc8febc599ebb35378a840cfcafcb9bbb | |
parent | 3ce0ff225ddb5a7e88941e98c777d710c81515ea (diff) | |
download | openbsd-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.c | 14 |
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; |