diff options
-rw-r--r-- | src/lib/libcrypto/x509/x509_purp.c | 14 |
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 | ||