openssl/crypto
Matt Caswell 59a783d05a Fix a race in ossl_provider_add_to_store()
If two threads both attempt to load the same provider at the same time,
they will first both check to see if the provider already exists. If it
doesn't then they will both then create new provider objects and call the
init function. However only one of the threads will be successful in adding
the provider to the store. For the "losing" thread we should still return
"success", but we should deinitialise and free the no longer required
provider object, and return the object that exists in the store.

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15854)
2021-06-24 14:48:15 +01:00
..
aes Fix aes_core to use U64() macro.. 2021-06-22 13:24:51 +10:00
aria Update copyright year 2021-04-08 13:04:41 +01:00
asn1 asn1: properly clean up on failed BIO creation 2021-06-22 12:43:21 +10:00
async Update copyright year 2021-06-17 13:24:59 +01:00
bf
bio Update copyright year 2021-06-17 13:24:59 +01:00
bn bn: save/restore registers to/from stack 2021-06-22 18:30:17 +10:00
buffer Update copyright year 2021-06-17 13:24:59 +01:00
camellia
cast
chacha Update copyright year 2021-06-17 13:24:59 +01:00
cmac Rename all getters to use get/get0 in name 2021-06-01 12:40:00 +02:00
cmp cmp_server.c: Fix check: certConf not allowed after transaction is closed 2021-06-23 17:20:49 +02:00
cms remove end of line whitespace 2021-06-15 19:01:00 +10:00
comp Update copyright year 2021-06-17 13:24:59 +01:00
conf Update copyright year 2021-06-17 13:24:59 +01:00
crmf Adapt other parts of the source to the changed EVP_Q_digest() and EVP_Q_mac() 2021-06-23 23:00:36 +02:00
ct Update copyright year 2021-06-17 13:24:59 +01:00
des
dh Fix DH private key check. 2021-06-16 11:25:24 +01:00
dsa Rename all getters to use get/get0 in name 2021-06-01 12:40:00 +02:00
dso Update copyright year 2021-06-17 13:24:59 +01:00
ec ec: Only build ecp_nistp521-ppc64.s if enable-ec_nistp_64_gcc_128 2021-06-22 18:30:17 +10:00
encode_decode OSSL_DECODER_from_bio: Avoid spurious decoder error 2021-06-24 15:26:56 +02:00
engine Update copyright year 2021-06-17 13:24:59 +01:00
err err: add unable to get lock errors 2021-06-24 15:51:48 +10:00
ess err: rename err_load_xxx_strings_int functions 2021-05-26 13:01:47 +10:00
evp EVP: Change the output size type of EVP_Q_digest() and EVP_Q_mac() 2021-06-23 23:00:36 +02:00
ffc Update copyright year 2021-06-17 13:24:59 +01:00
hmac Adapt other parts of the source to the changed EVP_Q_digest() and EVP_Q_mac() 2021-06-23 23:00:36 +02:00
http http_client.c: fix HTTP_VERSION_STR_LEN and make it more efficient 2021-06-18 14:29:19 +02:00
idea Update copyright year 2021-04-08 13:04:41 +01:00
kdf
lhash Update copyright year 2021-04-08 13:04:41 +01:00
md2
md4
md5 Remove unused code from the fips module 2021-05-08 20:44:41 +10:00
mdc2
modes Rename all getters to use get/get0 in name 2021-06-01 12:40:00 +02:00
objects Update copyright year 2021-06-17 13:24:59 +01:00
ocsp Update copyright year 2021-06-17 13:24:59 +01:00
pem Update copyright year 2021-06-17 13:24:59 +01:00
perlasm Update copyright year 2021-06-17 13:24:59 +01:00
pkcs7 Update copyright year 2021-06-17 13:24:59 +01:00
pkcs12 Update copyright year 2021-06-17 13:24:59 +01:00
poly1305 Drop libimplementations.a 2021-05-07 10:17:23 +02:00
property property: remove spurious incorrect comments 2021-06-24 15:51:48 +10:00
rand Ensure we remove libctx DRBG state before removing the provider store 2021-06-21 14:54:35 +01:00
rc2 Update copyright year 2021-05-06 13:03:23 +01:00
rc4
rc5
ripemd Drop libimplementations.a 2021-05-07 10:17:23 +02:00
rsa Replace non-ASCII character in source file 2021-06-19 22:04:34 +10:00
seed Update copyright year 2021-06-17 13:24:59 +01:00
sha Include a local static buffer for the SHA helper functions 2021-06-16 18:30:28 +10:00
siphash Fix a TODO(3.0) in the siphash code 2021-03-17 10:16:21 +10:00
sm2 Rename all getters to use get/get0 in name 2021-06-01 12:40:00 +02:00
sm3 Add "origin" field to EVP_CIPHER, EVP_MD 2021-04-18 10:03:07 +02:00
sm4 Update copyright year 2021-04-08 13:04:41 +01:00
srp add zero strenght arguments to BN and RAND RNG calls 2021-05-29 17:17:12 +10:00
stack Improve the implementation of X509_STORE_CTX_get1_issuer() 2021-04-28 11:19:34 +02:00
store STORE: Fix OSSL_STORE_open_ex() error reporting 2021-06-20 19:59:40 +02:00
ts Update copyright year 2021-06-17 13:24:59 +01:00
txt_db
ui Update copyright year 2021-06-17 13:24:59 +01:00
whrlpool A few cleanups of the provider build.infos 2021-05-12 13:23:33 +02:00
x509 cross-reference the DH and RSA SECLEVEL to level of security mappings 2021-06-23 09:26:15 +10:00
alphacpuid.pl
arm64cpuid.pl
arm_arch.h Update copyright year 2021-05-20 14:22:33 +01:00
armcap.c Use getauxval on Android with API level > 18 2021-06-15 12:53:26 +02:00
armv4cpuid.pl
asn1_dsa.c Update copyright year 2021-04-08 13:04:41 +01:00
bsearch.c
build.info FIPS: don't include crypto/passphrase.c in libfips.a 2021-06-05 10:32:13 +02:00
c64xpluscpuid.pl
context.c Add the concept of a child OSSL_LIB_CTX 2021-05-11 14:56:55 +01:00
core_algorithm.c Fix pointer passed to provider_unquery_operation 2021-05-17 10:22:27 +10:00
core_fetch.c CORE: Do a bit of cleanup of core fetching 2021-06-16 12:32:53 +01:00
core_namemap.c Rename all getters to use get/get0 in name 2021-06-01 12:40:00 +02:00
cpt_err.c err: rename err_load_xxx_strings_int functions 2021-05-26 13:01:47 +10:00
cpuid.c Refactor CPUID code 2021-04-02 16:39:13 +02:00
cryptlib.c crypto: remove TODOs 2021-06-02 16:30:15 +10:00
ctype.c Use <> for #include openssl/xxx 2021-05-27 09:56:41 +10:00
cversion.c
der_writer.c
dllmain.c
ebcdic.c
ex_data.c Add the ability for ex_data to have a priority 2021-05-11 14:56:55 +01:00
getenv.c
ia64cpuid.S
info.c
init.c OPENSSL_init_crypto must return 0 when cleanup was done 2021-06-03 17:42:21 +02:00
initthread.c Fix a memleak in the FIPS provider 2021-05-24 09:39:15 +10:00
LPdir_nyi.c
LPdir_unix.c
LPdir_vms.c
LPdir_win32.c
LPdir_win.c
LPdir_wince.c
mem_clr.c
mem_sec.c Update copyright year 2021-04-08 13:04:41 +01:00
mem.c
mips_arch.h
o_dir.c
o_fopen.c
o_init.c
o_str.c Update copyright year 2021-04-08 13:04:41 +01:00
o_time.c Update copyright year 2021-03-11 13:27:36 +00:00
packet.c Update copyright year 2021-06-17 13:24:59 +01:00
param_build_set.c Update copyright year 2021-03-11 13:27:36 +00:00
param_build.c Replace OSSL_PARAM_BLD_free_params() with OSSL_PARAM_free(). 2021-04-12 16:55:30 +10:00
params_dup.c params_dup: fix off by one error that allows array overreach. 2021-04-21 08:57:42 +10:00
params_from_text.c params: fix coverity 1473069: unchecked return values 2021-03-26 08:46:02 +10:00
params.c params: fix range check when converting double to uint64_t. 2021-06-19 15:47:57 +10:00
pariscid.pl
passphrase.c ossl_pw_get_passphrase: No ui method does not necessarily mean internal error 2021-06-24 15:26:56 +02:00
ppc_arch.h
ppccap.c ppc: fix ambiguous if if else statement 2021-06-01 15:04:05 +10:00
ppccpuid.pl
provider_child.c Fix a race in ossl_provider_add_to_store() 2021-06-24 14:48:15 +01:00
provider_conf.c Fix a race in ossl_provider_add_to_store() 2021-06-24 14:48:15 +01:00
provider_core.c Fix a race in ossl_provider_add_to_store() 2021-06-24 14:48:15 +01:00
provider_local.h make struct provider_info_st a full type 2021-06-24 14:48:15 +01:00
provider_predefined.c make struct provider_info_st a full type 2021-06-24 14:48:15 +01:00
provider.c Fix a race in ossl_provider_add_to_store() 2021-06-24 14:48:15 +01:00
punycode.c
README-sparse_array.md
s390x_arch.h
s390xcap.c
s390xcpuid.pl
self_test_core.c Update copyright year 2021-05-20 14:22:33 +01:00
sparc_arch.h
sparccpuid.S
sparcv9cap.c Update copyright year 2021-06-17 13:24:59 +01:00
sparse_array.c Update copyright year 2021-04-08 13:04:41 +01:00
threads_lib.c
threads_none.c Update copyright year 2021-04-08 13:04:41 +01:00
threads_pthread.c Add assert.h to threads_pthread.c for NonStop thread compiles. 2021-06-23 17:34:06 +02:00
threads_win.c Always check CRYPTO_LOCK_{read,write}_lock 2021-03-14 15:33:34 +10:00
trace.c Rework and make DEBUG macros consistent. 2021-05-28 10:04:31 +02:00
uid.c
vms_rms.h
x86_64cpuid.pl Update copyright year 2021-04-08 13:04:41 +01:00
x86cpuid.pl