Prevent the use of RUN_ONCE inside the FIPS module
authorMatt Caswell <matt@openssl.org>
Thu, 4 Jul 2019 09:21:53 +0000 (10:21 +0100)
committerMatt Caswell <matt@openssl.org>
Thu, 4 Jul 2019 16:11:07 +0000 (17:11 +0100)
commit2a1e2fe145c6eb8e75aa2e1b3a8c3a49384b2852
tree9416901b45909f6631373864bcfcb32acb2ea401
parente6716f2bb4d9588044820f29a7ced0f06789d6ef
Prevent the use of RUN_ONCE inside the FIPS module

FIPS module code *always* runs within the scope of an associated
OPENSSL_CTX. When the module is loaded the OPENSSL_CTX gets created, and
when the module is unloaded the OPENSSL_CX gets freed. A module may be
loaded multiple times within the scope of different OPENSSL_CTX objects.
"Global" data should always be stored within the OPENSSL_CTX. In this
way it will always get cleaned up properly when the module is unloaded.

All current code within the FIPS module works this way. To avoid
"accidents" we disabled the RUN_ONCE code inside the FIPS module.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/9308)
include/internal/thread_once.h