diff options
Diffstat (limited to 'src/lib/libssl/ssl_lib.c')
-rw-r--r-- | src/lib/libssl/ssl_lib.c | 41 |
1 files changed, 9 insertions, 32 deletions
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index 3c4d116919..6b4c7e72a1 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_lib.c,v 1.190 2018/11/07 01:53:36 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_lib.c,v 1.191 2018/11/08 20:55:18 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 | * |
@@ -261,23 +261,8 @@ SSL_new(SSL_CTX *ctx) | |||
261 | s->internal->mode = ctx->internal->mode; | 261 | s->internal->mode = ctx->internal->mode; |
262 | s->internal->max_cert_list = ctx->internal->max_cert_list; | 262 | s->internal->max_cert_list = ctx->internal->max_cert_list; |
263 | 263 | ||
264 | if (ctx->internal->cert != NULL) { | 264 | if ((s->cert = ssl_cert_dup(ctx->internal->cert)) == NULL) |
265 | /* | 265 | goto err; |
266 | * Earlier library versions used to copy the pointer to | ||
267 | * the CERT, not its contents; only when setting new | ||
268 | * parameters for the per-SSL copy, ssl_cert_new would be | ||
269 | * called (and the direct reference to the per-SSL_CTX | ||
270 | * settings would be lost, but those still were indirectly | ||
271 | * accessed for various purposes, and for that reason they | ||
272 | * used to be known as s->ctx->default_cert). | ||
273 | * Now we don't look at the SSL_CTX's CERT after having | ||
274 | * duplicated it once. | ||
275 | */ | ||
276 | s->cert = ssl_cert_dup(ctx->internal->cert); | ||
277 | if (s->cert == NULL) | ||
278 | goto err; | ||
279 | } else | ||
280 | s->cert=NULL; /* Cannot really happen (see SSL_CTX_new) */ | ||
281 | 266 | ||
282 | s->internal->read_ahead = ctx->internal->read_ahead; | 267 | s->internal->read_ahead = ctx->internal->read_ahead; |
283 | s->internal->msg_callback = ctx->internal->msg_callback; | 268 | s->internal->msg_callback = ctx->internal->msg_callback; |
@@ -1855,6 +1840,7 @@ SSL_CTX_new(const SSL_METHOD *meth) | |||
1855 | ret->verify_mode = SSL_VERIFY_NONE; | 1840 | ret->verify_mode = SSL_VERIFY_NONE; |
1856 | ret->sid_ctx_length = 0; | 1841 | ret->sid_ctx_length = 0; |
1857 | ret->internal->default_verify_callback = NULL; | 1842 | ret->internal->default_verify_callback = NULL; |
1843 | |||
1858 | if ((ret->internal->cert = ssl_cert_new()) == NULL) | 1844 | if ((ret->internal->cert = ssl_cert_new()) == NULL) |
1859 | goto err; | 1845 | goto err; |
1860 | 1846 | ||
@@ -2519,12 +2505,9 @@ SSL_dup(SSL *s) | |||
2519 | ret->method = s->method; | 2505 | ret->method = s->method; |
2520 | ret->method->internal->ssl_new(ret); | 2506 | ret->method->internal->ssl_new(ret); |
2521 | 2507 | ||
2522 | if (s->cert != NULL) { | 2508 | ssl_cert_free(ret->cert); |
2523 | ssl_cert_free(ret->cert); | 2509 | if ((ret->cert = ssl_cert_dup(s->cert)) == NULL) |
2524 | ret->cert = ssl_cert_dup(s->cert); | 2510 | goto err; |
2525 | if (ret->cert == NULL) | ||
2526 | goto err; | ||
2527 | } | ||
2528 | 2511 | ||
2529 | if (!SSL_set_session_id_context(ret, s->sid_ctx, | 2512 | if (!SSL_set_session_id_context(ret, s->sid_ctx, |
2530 | s->sid_ctx_length)) | 2513 | s->sid_ctx_length)) |
@@ -2658,20 +2641,14 @@ ssl_clear_cipher_write_state(SSL *s) | |||
2658 | X509 * | 2641 | X509 * |
2659 | SSL_get_certificate(const SSL *s) | 2642 | SSL_get_certificate(const SSL *s) |
2660 | { | 2643 | { |
2661 | if (s->cert != NULL) | 2644 | return (s->cert->key->x509); |
2662 | return (s->cert->key->x509); | ||
2663 | else | ||
2664 | return (NULL); | ||
2665 | } | 2645 | } |
2666 | 2646 | ||
2667 | /* Fix this function so that it takes an optional type parameter */ | 2647 | /* Fix this function so that it takes an optional type parameter */ |
2668 | EVP_PKEY * | 2648 | EVP_PKEY * |
2669 | SSL_get_privatekey(const SSL *s) | 2649 | SSL_get_privatekey(const SSL *s) |
2670 | { | 2650 | { |
2671 | if (s->cert != NULL) | 2651 | return (s->cert->key->privatekey); |
2672 | return (s->cert->key->privatekey); | ||
2673 | else | ||
2674 | return (NULL); | ||
2675 | } | 2652 | } |
2676 | 2653 | ||
2677 | const SSL_CIPHER * | 2654 | const SSL_CIPHER * |