diff options
| author | beck <> | 2018-03-17 16:20:01 +0000 |
|---|---|---|
| committer | beck <> | 2018-03-17 16:20:01 +0000 |
| commit | 035770aca4c8c1f0d36f1b8da62c9e1fb9a4f09b (patch) | |
| tree | 12cc674e7652f4d67e57ec9e1882e6e824b4808d /src/lib/libcrypto/ex_data.c | |
| parent | 1c31745efe6ed99c3a4e427046074fc4b544f08d (diff) | |
| download | openbsd-035770aca4c8c1f0d36f1b8da62c9e1fb9a4f09b.tar.gz openbsd-035770aca4c8c1f0d36f1b8da62c9e1fb9a4f09b.tar.bz2 openbsd-035770aca4c8c1f0d36f1b8da62c9e1fb9a4f09b.zip | |
Bring in compatibility for OpenSSL 1.1 style init functions.
This adds OPENSSL_init_crypto and OPENSSL_init_ssl, as well
thread safety modifications for the existing LibreSSL init
functions. The initialization routines are called automatically
by the normal entry points into the library, as in newer OpenSSL
ok jsing@, nits by tb@ and deraadt@
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/ex_data.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/libcrypto/ex_data.c b/src/lib/libcrypto/ex_data.c index 63885af3af..b1e3913662 100644 --- a/src/lib/libcrypto/ex_data.c +++ b/src/lib/libcrypto/ex_data.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ex_data.c,v 1.19 2017/01/29 17:49:22 beck Exp $ */ | 1 | /* $OpenBSD: ex_data.c,v 1.20 2018/03/17 16:20:01 beck Exp $ */ |
| 2 | 2 | ||
| 3 | /* | 3 | /* |
| 4 | * Overhaul notes; | 4 | * Overhaul notes; |
| @@ -312,6 +312,8 @@ def_get_class(int class_index) | |||
| 312 | EX_CLASS_ITEM d, *p, *gen; | 312 | EX_CLASS_ITEM d, *p, *gen; |
| 313 | EX_DATA_CHECK(return NULL;) | 313 | EX_DATA_CHECK(return NULL;) |
| 314 | d.class_index = class_index; | 314 | d.class_index = class_index; |
| 315 | if (!OPENSSL_init_crypto(0, NULL)) | ||
| 316 | return NULL; | ||
| 315 | CRYPTO_w_lock(CRYPTO_LOCK_EX_DATA); | 317 | CRYPTO_w_lock(CRYPTO_LOCK_EX_DATA); |
| 316 | p = lh_EX_CLASS_ITEM_retrieve(ex_data, &d); | 318 | p = lh_EX_CLASS_ITEM_retrieve(ex_data, &d); |
| 317 | if (!p) { | 319 | if (!p) { |
| @@ -500,6 +502,7 @@ int_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad) | |||
| 500 | EX_CLASS_ITEM *item; | 502 | EX_CLASS_ITEM *item; |
| 501 | void *ptr; | 503 | void *ptr; |
| 502 | CRYPTO_EX_DATA_FUNCS **storage = NULL; | 504 | CRYPTO_EX_DATA_FUNCS **storage = NULL; |
| 505 | |||
| 503 | if ((item = def_get_class(class_index)) == NULL) | 506 | if ((item = def_get_class(class_index)) == NULL) |
| 504 | return; | 507 | return; |
| 505 | CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); | 508 | CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); |
