summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/x509/x509_purp.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/lib/libcrypto/x509/x509_purp.c b/src/lib/libcrypto/x509/x509_purp.c
index 3f0081fe40..86ee27407e 100644
--- a/src/lib/libcrypto/x509/x509_purp.c
+++ b/src/lib/libcrypto/x509/x509_purp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_purp.c,v 1.6 2021/09/02 12:41:44 job Exp $ */ 1/* $OpenBSD: x509_purp.c,v 1.7 2021/09/13 15:26:53 claudio Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2001. 3 * project 2001.
4 */ 4 */
@@ -871,10 +871,18 @@ X509_check_issued(X509 *issuer, X509 *subject)
871 if (X509_NAME_cmp(X509_get_subject_name(issuer), 871 if (X509_NAME_cmp(X509_get_subject_name(issuer),
872 X509_get_issuer_name(subject))) 872 X509_get_issuer_name(subject)))
873 return X509_V_ERR_SUBJECT_ISSUER_MISMATCH; 873 return X509_V_ERR_SUBJECT_ISSUER_MISMATCH;
874 x509v3_cache_extensions(issuer); 874 if (!(issuer->ex_flags & EXFLAG_SET)) {
875 CRYPTO_w_lock(CRYPTO_LOCK_X509);
876 x509v3_cache_extensions(issuer);
877 CRYPTO_w_unlock(CRYPTO_LOCK_X509);
878 }
875 if (issuer->ex_flags & EXFLAG_INVALID) 879 if (issuer->ex_flags & EXFLAG_INVALID)
876 return X509_V_ERR_UNSPECIFIED; 880 return X509_V_ERR_UNSPECIFIED;
877 x509v3_cache_extensions(subject); 881 if (!(subject->ex_flags & EXFLAG_SET)) {
882 CRYPTO_w_lock(CRYPTO_LOCK_X509);
883 x509v3_cache_extensions(subject);
884 CRYPTO_w_unlock(CRYPTO_LOCK_X509);
885 }
878 if (subject->ex_flags & EXFLAG_INVALID) 886 if (subject->ex_flags & EXFLAG_INVALID)
879 return X509_V_ERR_UNSPECIFIED; 887 return X509_V_ERR_UNSPECIFIED;
880 888