aboutsummaryrefslogtreecommitdiff
path: root/crypto/cryptlib.c
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2018-07-20 13:19:11 +0200
committerAndy Polyakov <appro@openssl.org>2018-07-25 16:37:25 +0200
commit9e4a1c3f65863b0175ddc534e232e63c4f82ea5c (patch)
tree899e2c458e0dc33e4710522d2e46ff8afa919acd /crypto/cryptlib.c
parentb86d57bb0b23253c720db38ab18ca97cb888f701 (diff)
downloadopenssl-9e4a1c3f65863b0175ddc534e232e63c4f82ea5c.zip
openssl-9e4a1c3f65863b0175ddc534e232e63c4f82ea5c.tar.gz
openssl-9e4a1c3f65863b0175ddc534e232e63c4f82ea5c.tar.bz2
crypto/cryptlib.c: resolve possible race in OPENSSL_isservice.
Reviewed-by: Kurt Roeckx <kurt@roeckx.be> (Merged from https://github.com/openssl/openssl/pull/6752)
Diffstat (limited to 'crypto/cryptlib.c')
-rw-r--r--crypto/cryptlib.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c
index ad727ed..a7894dd 100644
--- a/crypto/cryptlib.c
+++ b/crypto/cryptlib.c
@@ -205,10 +205,14 @@ int OPENSSL_isservice(void)
if (_OPENSSL_isservice.p == NULL) {
HANDLE mod = GetModuleHandle(NULL);
+ FARPROC f;
+
if (mod != NULL)
- _OPENSSL_isservice.f = GetProcAddress(mod, "_OPENSSL_isservice");
- if (_OPENSSL_isservice.p == NULL)
+ f = GetProcAddress(mod, "_OPENSSL_isservice");
+ if (f == NULL)
_OPENSSL_isservice.p = (void *)-1;
+ else
+ _OPENSSL_isservice.f = f;
}
if (_OPENSSL_isservice.p != (void *)-1)