Commit 9e4a1c3f authored by Andy Polyakov's avatar Andy Polyakov
Browse files

crypto/cryptlib.c: resolve possible race in OPENSSL_isservice.

parent b86d57bb
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -205,10 +205,14 @@ int OPENSSL_isservice(void)


    if (_OPENSSL_isservice.p == NULL) {
    if (_OPENSSL_isservice.p == NULL) {
        HANDLE mod = GetModuleHandle(NULL);
        HANDLE mod = GetModuleHandle(NULL);
        FARPROC f;

        if (mod != NULL)
        if (mod != NULL)
            _OPENSSL_isservice.f = GetProcAddress(mod, "_OPENSSL_isservice");
            f = GetProcAddress(mod, "_OPENSSL_isservice");
        if (_OPENSSL_isservice.p == NULL)
        if (f == NULL)
            _OPENSSL_isservice.p = (void *)-1;
            _OPENSSL_isservice.p = (void *)-1;
        else
            _OPENSSL_isservice.f = f;
    }
    }


    if (_OPENSSL_isservice.p != (void *)-1)
    if (_OPENSSL_isservice.p != (void *)-1)