summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2020-05-31 18:03:32 +0000
committerjsing <>2020-05-31 18:03:32 +0000
commit95d91de56d07efcd6dd35c2b3815d31608c9ba7f (patch)
treeba2c4b8a939c7f41a540f91b545d382c51e1939c /src
parentac59d0e35f28383b918365d1f209defd9cc9ffd5 (diff)
downloadopenbsd-95d91de56d07efcd6dd35c2b3815d31608c9ba7f.tar.gz
openbsd-95d91de56d07efcd6dd35c2b3815d31608c9ba7f.tar.bz2
openbsd-95d91de56d07efcd6dd35c2b3815d31608c9ba7f.zip
Replace ssl_max_server_version() with ssl_downgrade_max_version()
Replace the only occurrence of ssl_max_server_version() with a call to ssl_downgrade_max_version() and remove ssl_max_server_version(). ok beck@ tb@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/ssl_ciphers.c7
-rw-r--r--src/lib/libssl/ssl_locl.h3
-rw-r--r--src/lib/libssl/ssl_versions.c26
3 files changed, 6 insertions, 30 deletions
diff --git a/src/lib/libssl/ssl_ciphers.c b/src/lib/libssl/ssl_ciphers.c
index 3abed60b5b..3a1fb14d5c 100644
--- a/src/lib/libssl/ssl_ciphers.c
+++ b/src/lib/libssl/ssl_ciphers.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_ciphers.c,v 1.3 2019/05/15 09:13:16 bcook Exp $ */ 1/* $OpenBSD: ssl_ciphers.c,v 1.4 2020/05/31 18:03:32 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2015-2017 Doug Hogan <doug@openbsd.org> 3 * Copyright (c) 2015-2017 Doug Hogan <doug@openbsd.org>
4 * Copyright (c) 2015-2018 Joel Sing <jsing@openbsd.org> 4 * Copyright (c) 2015-2018 Joel Sing <jsing@openbsd.org>
@@ -133,8 +133,9 @@ ssl_bytes_to_cipher_list(SSL *s, CBS *cbs)
133 * Fail if the current version is an unexpected 133 * Fail if the current version is an unexpected
134 * downgrade. 134 * downgrade.
135 */ 135 */
136 max_version = ssl_max_server_version(s); 136 if (!ssl_downgrade_max_version(s, &max_version))
137 if (max_version == 0 || s->version < max_version) { 137 goto err;
138 if (s->version < max_version) {
138 SSLerror(s, SSL_R_INAPPROPRIATE_FALLBACK); 139 SSLerror(s, SSL_R_INAPPROPRIATE_FALLBACK);
139 ssl3_send_alert(s, SSL3_AL_FATAL, 140 ssl3_send_alert(s, SSL3_AL_FATAL,
140 SSL_AD_INAPPROPRIATE_FALLBACK); 141 SSL_AD_INAPPROPRIATE_FALLBACK);
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h
index 03c2c227ed..bfc3c1ad9b 100644
--- a/src/lib/libssl/ssl_locl.h
+++ b/src/lib/libssl/ssl_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_locl.h,v 1.278 2020/05/31 16:36:35 jsing Exp $ */ 1/* $OpenBSD: ssl_locl.h,v 1.279 2020/05/31 18:03:32 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 *
@@ -1094,7 +1094,6 @@ int ssl_version_set_min(const SSL_METHOD *meth, uint16_t ver, uint16_t max_ver,
1094 uint16_t *out_ver); 1094 uint16_t *out_ver);
1095int ssl_version_set_max(const SSL_METHOD *meth, uint16_t ver, uint16_t min_ver, 1095int ssl_version_set_max(const SSL_METHOD *meth, uint16_t ver, uint16_t min_ver,
1096 uint16_t *out_ver); 1096 uint16_t *out_ver);
1097uint16_t ssl_max_server_version(SSL *s);
1098int ssl_downgrade_max_version(SSL *s, uint16_t *max_ver); 1097int ssl_downgrade_max_version(SSL *s, uint16_t *max_ver);
1099int ssl_cipher_is_permitted(const SSL_CIPHER *cipher, uint16_t min_ver, 1098int ssl_cipher_is_permitted(const SSL_CIPHER *cipher, uint16_t min_ver,
1100 uint16_t max_ver); 1099 uint16_t max_ver);
diff --git a/src/lib/libssl/ssl_versions.c b/src/lib/libssl/ssl_versions.c
index 03eb41582a..b21fa7198c 100644
--- a/src/lib/libssl/ssl_versions.c
+++ b/src/lib/libssl/ssl_versions.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_versions.c,v 1.5 2020/05/31 16:36:35 jsing Exp $ */ 1/* $OpenBSD: ssl_versions.c,v 1.6 2020/05/31 18:03:32 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2016, 2017 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2016, 2017 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -200,30 +200,6 @@ ssl_max_shared_version(SSL *s, uint16_t peer_ver, uint16_t *max_ver)
200 return 1; 200 return 1;
201} 201}
202 202
203uint16_t
204ssl_max_server_version(SSL *s)
205{
206 uint16_t max_version, min_version = 0;
207
208 if (SSL_IS_DTLS(s))
209 return (DTLS1_VERSION);
210
211 if (!ssl_enabled_version_range(s, &min_version, &max_version))
212 return 0;
213
214 /*
215 * Limit to the versions supported by this method. The SSL method
216 * will be changed during version negotiation, as such we want to
217 * use the SSL method from the context.
218 */
219 if (!ssl_clamp_version_range(&min_version, &max_version,
220 s->ctx->method->internal->min_version,
221 s->ctx->method->internal->max_version))
222 return 0;
223
224 return (max_version);
225}
226
227int 203int
228ssl_downgrade_max_version(SSL *s, uint16_t *max_ver) 204ssl_downgrade_max_version(SSL *s, uint16_t *max_ver)
229{ 205{