From: Krists Krilovs Date: Mon, 8 Jul 2019 20:43:09 +0000 (-0700) Subject: Fix wrong lock claimed in x509 dir lookup. X-Git-Tag: OpenSSL_1_1_0l~22 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=69ae4153af5a6e62369611b694748c846a461d02;p=oweals%2Fopenssl.git Fix wrong lock claimed in x509 dir lookup. x509 store's objects cache can get corrupted when using dir lookup method in multithreaded application. Claim x509 store's lock when accessing objects cache. CLA: trivial Reviewed-by: Richard Levitte Reviewed-by: Tomas Mraz Reviewed-by: Bernd Edlinger Reviewed-by: Paul Dale Reviewed-by: Shane Lontis (Merged from https://github.com/openssl/openssl/pull/9326) --- diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c index 4fa1dd37b9..c3ab3621d1 100644 --- a/crypto/x509/by_dir.c +++ b/crypto/x509/by_dir.c @@ -322,13 +322,13 @@ static int get_cert_by_subject(X509_LOOKUP *xl, X509_LOOKUP_TYPE type, /* * we have added it to the cache so now pull it out again */ - CRYPTO_THREAD_write_lock(ctx->lock); + X509_STORE_lock(xl->store_ctx); j = sk_X509_OBJECT_find(xl->store_ctx->objs, &stmp); if (j != -1) tmp = sk_X509_OBJECT_value(xl->store_ctx->objs, j); else tmp = NULL; - CRYPTO_THREAD_unlock(ctx->lock); + X509_STORE_unlock(xl->store_ctx); /* If a CRL, update the last file suffix added for this */