diff options
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); |
