diff options
Diffstat (limited to 'src/lib/libcrypto/ex_data.c')
-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); |