diff options
Diffstat (limited to 'src/lib/libssl/s23_clnt.c')
-rw-r--r-- | src/lib/libssl/s23_clnt.c | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/src/lib/libssl/s23_clnt.c b/src/lib/libssl/s23_clnt.c index 458eb37d5f..a99a7691bd 100644 --- a/src/lib/libssl/s23_clnt.c +++ b/src/lib/libssl/s23_clnt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s23_clnt.c,v 1.40 2015/07/19 07:30:06 doug Exp $ */ | 1 | /* $OpenBSD: s23_clnt.c,v 1.41 2015/08/27 06:21:15 doug 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 | * |
@@ -196,8 +196,6 @@ SSLv23_client_method(void) | |||
196 | static const SSL_METHOD * | 196 | static const SSL_METHOD * |
197 | ssl23_get_client_method(int ver) | 197 | ssl23_get_client_method(int ver) |
198 | { | 198 | { |
199 | if (ver == SSL3_VERSION) | ||
200 | return (SSLv3_client_method()); | ||
201 | if (ver == TLS1_VERSION) | 199 | if (ver == TLS1_VERSION) |
202 | return (TLSv1_client_method()); | 200 | return (TLSv1_client_method()); |
203 | if (ver == TLS1_1_VERSION) | 201 | if (ver == TLS1_1_VERSION) |
@@ -331,7 +329,7 @@ ssl23_client_hello(SSL *s) | |||
331 | * TLS1>=1, it would be insufficient to pass SSL_NO_TLSv1, the | 329 | * TLS1>=1, it would be insufficient to pass SSL_NO_TLSv1, the |
332 | * answer is SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2. | 330 | * answer is SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2. |
333 | */ | 331 | */ |
334 | mask = SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3; | 332 | mask = SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1; |
335 | version = TLS1_2_VERSION; | 333 | version = TLS1_2_VERSION; |
336 | 334 | ||
337 | if ((options & SSL_OP_NO_TLSv1_2) && (options & mask) != mask) | 335 | if ((options & SSL_OP_NO_TLSv1_2) && (options & mask) != mask) |
@@ -340,9 +338,6 @@ ssl23_client_hello(SSL *s) | |||
340 | if ((options & SSL_OP_NO_TLSv1_1) && (options & mask) != mask) | 338 | if ((options & SSL_OP_NO_TLSv1_1) && (options & mask) != mask) |
341 | version = TLS1_VERSION; | 339 | version = TLS1_VERSION; |
342 | mask &= ~SSL_OP_NO_TLSv1; | 340 | mask &= ~SSL_OP_NO_TLSv1; |
343 | if ((options & SSL_OP_NO_TLSv1) && (options & mask) != mask) | ||
344 | version = SSL3_VERSION; | ||
345 | mask &= ~SSL_OP_NO_SSLv3; | ||
346 | 341 | ||
347 | buf = (unsigned char *)s->init_buf->data; | 342 | buf = (unsigned char *)s->init_buf->data; |
348 | if (s->state == SSL23_ST_CW_CLNT_HELLO_A) { | 343 | if (s->state == SSL23_ST_CW_CLNT_HELLO_A) { |
@@ -357,9 +352,6 @@ ssl23_client_hello(SSL *s) | |||
357 | } else if (version == TLS1_VERSION) { | 352 | } else if (version == TLS1_VERSION) { |
358 | version_major = TLS1_VERSION_MAJOR; | 353 | version_major = TLS1_VERSION_MAJOR; |
359 | version_minor = TLS1_VERSION_MINOR; | 354 | version_minor = TLS1_VERSION_MINOR; |
360 | } else if (version == SSL3_VERSION) { | ||
361 | version_major = SSL3_VERSION_MAJOR; | ||
362 | version_minor = SSL3_VERSION_MINOR; | ||
363 | } else { | 355 | } else { |
364 | SSLerr(SSL_F_SSL23_CLIENT_HELLO, SSL_R_NO_PROTOCOLS_AVAILABLE); | 356 | SSLerr(SSL_F_SSL23_CLIENT_HELLO, SSL_R_NO_PROTOCOLS_AVAILABLE); |
365 | return (-1); | 357 | return (-1); |
@@ -494,11 +486,7 @@ ssl23_get_server_hello(SSL *s) | |||
494 | (p[0] == SSL3_RT_ALERT && p[3] == 0 && p[4] == 2))) { | 486 | (p[0] == SSL3_RT_ALERT && p[3] == 0 && p[4] == 2))) { |
495 | /* we have sslv3 or tls1 (server hello or alert) */ | 487 | /* we have sslv3 or tls1 (server hello or alert) */ |
496 | 488 | ||
497 | if ((p[2] == SSL3_VERSION_MINOR) && | 489 | if ((p[2] == TLS1_VERSION_MINOR) && |
498 | !(s->options & SSL_OP_NO_SSLv3)) { | ||
499 | s->version = SSL3_VERSION; | ||
500 | s->method = SSLv3_client_method(); | ||
501 | } else if ((p[2] == TLS1_VERSION_MINOR) && | ||
502 | !(s->options & SSL_OP_NO_TLSv1)) { | 490 | !(s->options & SSL_OP_NO_TLSv1)) { |
503 | s->version = TLS1_VERSION; | 491 | s->version = TLS1_VERSION; |
504 | s->method = TLSv1_client_method(); | 492 | s->method = TLSv1_client_method(); |