From: Matt Caswell Date: Fri, 12 May 2023 14:52:07 +0000 (+0100) Subject: Avoid an unneccessary lock if we didn't add anything to the store X-Git-Tag: openssl-3.2.0-alpha1~699 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=50001e0e15d4a96213c2eea7c56f80087afa89fd;p=thirdparty%2Fopenssl.git Avoid an unneccessary lock if we didn't add anything to the store Partially fixes #20286 Reviewed-by: Tomas Mraz Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/20952) --- diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c index 3c7f67b5a18..cd1b53740b1 100644 --- a/crypto/x509/by_dir.c +++ b/crypto/x509/by_dir.c @@ -352,11 +352,15 @@ static int get_cert_by_subject_ex(X509_LOOKUP *xl, X509_LOOKUP_TYPE type, * Note: quadratic time find here since the objects won't generally be * sorted and sorting the would result in O(n^2 log n) complexity. */ - X509_STORE_lock(xl->store_ctx); - j = sk_X509_OBJECT_find(xl->store_ctx->objs, &stmp); - tmp = sk_X509_OBJECT_value(xl->store_ctx->objs, j); - X509_STORE_unlock(xl->store_ctx); - + if (k > 0) { + X509_STORE_lock(xl->store_ctx); + j = sk_X509_OBJECT_find(xl->store_ctx->objs, &stmp); + tmp = sk_X509_OBJECT_value(xl->store_ctx->objs, j); + X509_STORE_unlock(xl->store_ctx); + } else { + j = -1; + tmp = NULL; + } /* * If a CRL, update the last file suffix added for this. * We don't need to add an entry if k is 0 as this is the initial value.