summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_clnt.c
diff options
context:
space:
mode:
authorjsing <>2021-02-22 15:59:10 +0000
committerjsing <>2021-02-22 15:59:10 +0000
commit5be7b39a3d59ca113945b77a97aaa4d8875ccc82 (patch)
treea7f7865a8d1bcc0bfa905831a41b2d44f8183e83 /src/lib/libssl/ssl_clnt.c
parent1da7041bc31ef34b77468a85d810549c4e4f0729 (diff)
downloadopenbsd-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.c13
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;