diff options
Diffstat (limited to 'src/lib/libssl/ssl_srvr.c')
| -rw-r--r-- | src/lib/libssl/ssl_srvr.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c index fac24f4d00..15dfdc35b1 100644 --- a/src/lib/libssl/ssl_srvr.c +++ b/src/lib/libssl/ssl_srvr.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_srvr.c,v 1.77 2020/05/31 16:36:35 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_srvr.c,v 1.78 2020/06/01 08:04:02 tb 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 | * |
| @@ -1778,7 +1778,8 @@ ssl3_get_client_kex_rsa(SSL *s, CBS *cbs) | |||
| 1778 | static int | 1778 | static int |
| 1779 | ssl3_get_client_kex_dhe(SSL *s, CBS *cbs) | 1779 | ssl3_get_client_kex_dhe(SSL *s, CBS *cbs) |
| 1780 | { | 1780 | { |
| 1781 | int key_size = 0, key_len, al; | 1781 | int key_size = 0; |
| 1782 | int key_is_invalid, key_len, al; | ||
| 1782 | unsigned char *key = NULL; | 1783 | unsigned char *key = NULL; |
| 1783 | BIGNUM *bn = NULL; | 1784 | BIGNUM *bn = NULL; |
| 1784 | CBS dh_Yc; | 1785 | CBS dh_Yc; |
| @@ -1809,9 +1810,20 @@ ssl3_get_client_kex_dhe(SSL *s, CBS *cbs) | |||
| 1809 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 1810 | SSLerror(s, ERR_R_MALLOC_FAILURE); |
| 1810 | goto err; | 1811 | goto err; |
| 1811 | } | 1812 | } |
| 1813 | if (!DH_check_pub_key(dh, bn, &key_is_invalid)) { | ||
| 1814 | al = SSL_AD_INTERNAL_ERROR; | ||
| 1815 | SSLerror(s, ERR_R_DH_LIB); | ||
| 1816 | goto f_err; | ||
| 1817 | } | ||
| 1818 | if (key_is_invalid) { | ||
| 1819 | al = SSL_AD_ILLEGAL_PARAMETER; | ||
| 1820 | SSLerror(s, ERR_R_DH_LIB); | ||
| 1821 | goto f_err; | ||
| 1822 | } | ||
| 1812 | if ((key_len = DH_compute_key(key, bn, dh)) <= 0) { | 1823 | if ((key_len = DH_compute_key(key, bn, dh)) <= 0) { |
| 1824 | al = SSL_AD_INTERNAL_ERROR; | ||
| 1813 | SSLerror(s, ERR_R_DH_LIB); | 1825 | SSLerror(s, ERR_R_DH_LIB); |
| 1814 | goto err; | 1826 | goto f_err; |
| 1815 | } | 1827 | } |
| 1816 | 1828 | ||
| 1817 | s->session->master_key_length = tls1_generate_master_secret(s, | 1829 | s->session->master_key_length = tls1_generate_master_secret(s, |
