diff options
author | jsing <> | 2021-02-22 15:59:10 +0000 |
---|---|---|
committer | jsing <> | 2021-02-22 15:59:10 +0000 |
commit | 5be7b39a3d59ca113945b77a97aaa4d8875ccc82 (patch) | |
tree | a7f7865a8d1bcc0bfa905831a41b2d44f8183e83 /src/lib/libssl/ssl_clnt.c | |
parent | 1da7041bc31ef34b77468a85d810549c4e4f0729 (diff) | |
download | openbsd-5be7b39a3d59ca113945b77a97aaa4d8875ccc82.tar.gz openbsd-5be7b39a3d59ca113945b77a97aaa4d8875ccc82.tar.bz2 openbsd-5be7b39a3d59ca113945b77a97aaa4d8875ccc82.zip |
Factor out/change some of the legacy client version handling code.
This consolidates the version handling code and will make upcoming changes
easier.
ok tb@
Diffstat (limited to 'src/lib/libssl/ssl_clnt.c')
-rw-r--r-- | src/lib/libssl/ssl_clnt.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/lib/libssl/ssl_clnt.c b/src/lib/libssl/ssl_clnt.c index bfff652ff1..70bda982c6 100644 --- a/src/lib/libssl/ssl_clnt.c +++ b/src/lib/libssl/ssl_clnt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_clnt.c,v 1.83 2021/02/20 14:16:56 tb Exp $ */ | 1 | /* $OpenBSD: ssl_clnt.c,v 1.84 2021/02/22 15:59:10 jsing 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 | * |
@@ -655,7 +655,7 @@ ssl3_send_client_hello(SSL *s) | |||
655 | if (S3I(s)->hs.state == SSL3_ST_CW_CLNT_HELLO_A) { | 655 | if (S3I(s)->hs.state == SSL3_ST_CW_CLNT_HELLO_A) { |
656 | SSL_SESSION *sess = s->session; | 656 | SSL_SESSION *sess = s->session; |
657 | 657 | ||
658 | if (ssl_supported_version_range(s, NULL, &max_version) != 1) { | 658 | if (!ssl_max_supported_version(s, &max_version)) { |
659 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); | 659 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); |
660 | return (-1); | 660 | return (-1); |
661 | } | 661 | } |
@@ -852,7 +852,7 @@ ssl3_get_server_hello(SSL *s) | |||
852 | { | 852 | { |
853 | CBS cbs, server_random, session_id; | 853 | CBS cbs, server_random, session_id; |
854 | uint16_t server_version, cipher_suite; | 854 | uint16_t server_version, cipher_suite; |
855 | uint16_t min_version, max_version; | 855 | uint16_t max_version; |
856 | uint8_t compression_method; | 856 | uint8_t compression_method; |
857 | const SSL_CIPHER *cipher; | 857 | const SSL_CIPHER *cipher; |
858 | const SSL_METHOD *method; | 858 | const SSL_METHOD *method; |
@@ -896,12 +896,7 @@ ssl3_get_server_hello(SSL *s) | |||
896 | if (!CBS_get_u16(&cbs, &server_version)) | 896 | if (!CBS_get_u16(&cbs, &server_version)) |
897 | goto decode_err; | 897 | goto decode_err; |
898 | 898 | ||
899 | if (ssl_supported_version_range(s, &min_version, &max_version) != 1) { | 899 | if (!ssl_check_version_from_server(s, server_version)) { |
900 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); | ||
901 | goto err; | ||
902 | } | ||
903 | |||
904 | if (server_version < min_version || server_version > max_version) { | ||
905 | SSLerror(s, SSL_R_WRONG_SSL_VERSION); | 900 | SSLerror(s, SSL_R_WRONG_SSL_VERSION); |
906 | s->version = (s->version & 0xff00) | (server_version & 0xff); | 901 | s->version = (s->version & 0xff00) | (server_version & 0xff); |
907 | al = SSL_AD_PROTOCOL_VERSION; | 902 | al = SSL_AD_PROTOCOL_VERSION; |