mirror of
https://github.com/openssl/openssl.git
synced 2024-12-15 06:01:37 +08:00
Correct order of ossl_condvar_signal in quic_multistream_test
quic_multistream test was issuing a signal on a condvar after dropping the corresponding mutex, not before, leading to potential race conditions in the reading of the associated data Fixes #22588 Reviewed-by: Hugo Landau <hlandau@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22616)
This commit is contained in:
parent
0efcf1384f
commit
22b482a8b6
@ -497,8 +497,8 @@ static int join_server_thread(struct helper *h)
|
||||
|
||||
ossl_crypto_mutex_lock(h->server_thread.m);
|
||||
h->server_thread.stop = 1;
|
||||
ossl_crypto_mutex_unlock(h->server_thread.m);
|
||||
ossl_crypto_condvar_signal(h->server_thread.c);
|
||||
ossl_crypto_mutex_unlock(h->server_thread.m);
|
||||
|
||||
ossl_crypto_thread_native_join(h->server_thread.t, &rv);
|
||||
ossl_crypto_thread_native_clean(h->server_thread.t);
|
||||
@ -1079,8 +1079,8 @@ static int run_script_worker(struct helper *h, const struct script_op *script,
|
||||
else if (h->blocking && !h->server_thread.ready) {
|
||||
ossl_crypto_mutex_lock(h->server_thread.m);
|
||||
h->server_thread.ready = 1;
|
||||
ossl_crypto_mutex_unlock(h->server_thread.m);
|
||||
ossl_crypto_condvar_signal(h->server_thread.c);
|
||||
ossl_crypto_mutex_unlock(h->server_thread.m);
|
||||
}
|
||||
if (h->blocking)
|
||||
assert(h->s == NULL);
|
||||
@ -2658,8 +2658,8 @@ static int script_20_trigger(struct helper *h, volatile uint64_t *counter)
|
||||
#if defined(OPENSSL_THREADS)
|
||||
ossl_crypto_mutex_lock(h->misc_m);
|
||||
++*counter;
|
||||
ossl_crypto_mutex_unlock(h->misc_m);
|
||||
ossl_crypto_condvar_broadcast(h->misc_cv);
|
||||
ossl_crypto_mutex_unlock(h->misc_m);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user