diff options
Diffstat (limited to 'src/lib/libssl/ssl_tlsext.c')
| -rw-r--r-- | src/lib/libssl/ssl_tlsext.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/lib/libssl/ssl_tlsext.c b/src/lib/libssl/ssl_tlsext.c index 7538efdc8c..69f8ddbc40 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.107 2022/01/11 18:24:03 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_tlsext.c,v 1.108 2022/01/11 18:28:41 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> |
| @@ -1478,6 +1478,7 @@ int | |||
| 1478 | tlsext_keyshare_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | 1478 | tlsext_keyshare_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) |
| 1479 | { | 1479 | { |
| 1480 | CBS client_shares, key_exchange; | 1480 | CBS client_shares, key_exchange; |
| 1481 | int decode_error; | ||
| 1481 | uint16_t group; | 1482 | uint16_t group; |
| 1482 | 1483 | ||
| 1483 | if (!CBS_get_u16_length_prefixed(cbs, &client_shares)) | 1484 | if (!CBS_get_u16_length_prefixed(cbs, &client_shares)) |
| @@ -1515,8 +1516,11 @@ tlsext_keyshare_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 1515 | return 0; | 1516 | return 0; |
| 1516 | } | 1517 | } |
| 1517 | if (!tls_key_share_peer_public(S3I(s)->hs.key_share, | 1518 | if (!tls_key_share_peer_public(S3I(s)->hs.key_share, |
| 1518 | &key_exchange, NULL)) | 1519 | &key_exchange, &decode_error, NULL)) { |
| 1520 | if (!decode_error) | ||
| 1521 | *alert = SSL_AD_INTERNAL_ERROR; | ||
| 1519 | return 0; | 1522 | return 0; |
| 1523 | } | ||
| 1520 | } | 1524 | } |
| 1521 | 1525 | ||
| 1522 | return 1; | 1526 | return 1; |
| @@ -1561,6 +1565,7 @@ int | |||
| 1561 | tlsext_keyshare_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | 1565 | tlsext_keyshare_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) |
| 1562 | { | 1566 | { |
| 1563 | CBS key_exchange; | 1567 | CBS key_exchange; |
| 1568 | int decode_error; | ||
| 1564 | uint16_t group; | 1569 | uint16_t group; |
| 1565 | 1570 | ||
| 1566 | /* Unpack server share. */ | 1571 | /* Unpack server share. */ |
| @@ -1588,8 +1593,11 @@ tlsext_keyshare_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 1588 | return 0; | 1593 | return 0; |
| 1589 | } | 1594 | } |
| 1590 | if (!tls_key_share_peer_public(S3I(s)->hs.key_share, | 1595 | if (!tls_key_share_peer_public(S3I(s)->hs.key_share, |
| 1591 | &key_exchange, NULL)) | 1596 | &key_exchange, &decode_error, NULL)) { |
| 1597 | if (!decode_error) | ||
| 1598 | *alert = SSL_AD_INTERNAL_ERROR; | ||
| 1592 | return 0; | 1599 | return 0; |
| 1600 | } | ||
| 1593 | 1601 | ||
| 1594 | return 1; | 1602 | return 1; |
| 1595 | } | 1603 | } |
