diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libssl/ssl_clnt.c | 18 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_locl.h | 3 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_srvr.c | 19 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_versions.c | 12 |
4 files changed, 24 insertions, 28 deletions
diff --git a/src/lib/libssl/ssl_clnt.c b/src/lib/libssl/ssl_clnt.c index 4a6e8b06a8..25164ea012 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.76 2020/10/14 16:57:33 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_clnt.c,v 1.77 2021/02/07 15:04: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 | * |
| @@ -212,18 +212,10 @@ ssl3_connect(SSL *s) | |||
| 212 | if (cb != NULL) | 212 | if (cb != NULL) |
| 213 | cb(s, SSL_CB_HANDSHAKE_START, 1); | 213 | cb(s, SSL_CB_HANDSHAKE_START, 1); |
| 214 | 214 | ||
| 215 | if (SSL_is_dtls(s)) { | 215 | if (!ssl_legacy_stack_version(s, s->version)) { |
| 216 | if ((s->version & 0xff00) != (DTLS1_VERSION & 0xff00)) { | 216 | SSLerror(s, ERR_R_INTERNAL_ERROR); |
| 217 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 217 | ret = -1; |
| 218 | ret = -1; | 218 | goto end; |
| 219 | goto end; | ||
| 220 | } | ||
| 221 | } else { | ||
| 222 | if ((s->version & 0xff00) != 0x0300) { | ||
| 223 | SSLerror(s, ERR_R_INTERNAL_ERROR); | ||
| 224 | ret = -1; | ||
| 225 | goto end; | ||
| 226 | } | ||
| 227 | } | 219 | } |
| 228 | 220 | ||
| 229 | /* s->version=SSL3_VERSION; */ | 221 | /* s->version=SSL3_VERSION; */ |
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h index d5298d7af1..b56a99bb79 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.318 2021/01/28 17:00:39 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_locl.h,v 1.319 2021/02/07 15:04: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 | * |
| @@ -1115,6 +1115,7 @@ int ssl_version_set_min(const SSL_METHOD *meth, uint16_t ver, uint16_t max_ver, | |||
| 1115 | int ssl_version_set_max(const SSL_METHOD *meth, uint16_t ver, uint16_t min_ver, | 1115 | int ssl_version_set_max(const SSL_METHOD *meth, uint16_t ver, uint16_t min_ver, |
| 1116 | uint16_t *out_ver); | 1116 | uint16_t *out_ver); |
| 1117 | int ssl_downgrade_max_version(SSL *s, uint16_t *max_ver); | 1117 | int ssl_downgrade_max_version(SSL *s, uint16_t *max_ver); |
| 1118 | int ssl_legacy_stack_version(SSL *s, uint16_t version); | ||
| 1118 | int ssl_cipher_in_list(STACK_OF(SSL_CIPHER) *ciphers, const SSL_CIPHER *cipher); | 1119 | int ssl_cipher_in_list(STACK_OF(SSL_CIPHER) *ciphers, const SSL_CIPHER *cipher); |
| 1119 | int ssl_cipher_allowed_in_version_range(const SSL_CIPHER *cipher, | 1120 | int ssl_cipher_allowed_in_version_range(const SSL_CIPHER *cipher, |
| 1120 | uint16_t min_ver, uint16_t max_ver); | 1121 | uint16_t min_ver, uint16_t max_ver); |
diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c index 3551ee41ee..15768bb565 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.90 2021/01/26 14:22:20 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_srvr.c,v 1.91 2021/02/07 15:04: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 | * |
| @@ -213,19 +213,12 @@ ssl3_accept(SSL *s) | |||
| 213 | if (cb != NULL) | 213 | if (cb != NULL) |
| 214 | cb(s, SSL_CB_HANDSHAKE_START, 1); | 214 | cb(s, SSL_CB_HANDSHAKE_START, 1); |
| 215 | 215 | ||
| 216 | if (SSL_is_dtls(s)) { | 216 | if (!ssl_legacy_stack_version(s, s->version)) { |
| 217 | if ((s->version & 0xff00) != (DTLS1_VERSION & 0xff00)) { | 217 | SSLerror(s, ERR_R_INTERNAL_ERROR); |
| 218 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 218 | ret = -1; |
| 219 | ret = -1; | 219 | goto end; |
| 220 | goto end; | ||
| 221 | } | ||
| 222 | } else { | ||
| 223 | if ((s->version >> 8) != 3) { | ||
| 224 | SSLerror(s, ERR_R_INTERNAL_ERROR); | ||
| 225 | ret = -1; | ||
| 226 | goto end; | ||
| 227 | } | ||
| 228 | } | 220 | } |
| 221 | |||
| 229 | s->internal->type = SSL_ST_ACCEPT; | 222 | s->internal->type = SSL_ST_ACCEPT; |
| 230 | 223 | ||
| 231 | if (!ssl3_setup_init_buffer(s)) { | 224 | if (!ssl3_setup_init_buffer(s)) { |
diff --git a/src/lib/libssl/ssl_versions.c b/src/lib/libssl/ssl_versions.c index c5de9d0cde..83d0d06af5 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.8 2021/01/04 19:19:12 tb Exp $ */ | 1 | /* $OpenBSD: ssl_versions.c,v 1.9 2021/02/07 15:04:10 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 | * |
| @@ -231,3 +231,13 @@ ssl_downgrade_max_version(SSL *s, uint16_t *max_ver) | |||
| 231 | 231 | ||
| 232 | return 1; | 232 | return 1; |
| 233 | } | 233 | } |
| 234 | |||
| 235 | int | ||
| 236 | ssl_legacy_stack_version(SSL *s, uint16_t version) | ||
| 237 | { | ||
| 238 | if (SSL_is_dtls(s)) | ||
| 239 | return version == DTLS1_VERSION; | ||
| 240 | |||
| 241 | return version == TLS1_VERSION || version == TLS1_1_VERSION || | ||
| 242 | version == TLS1_2_VERSION; | ||
| 243 | } | ||
