Commit 471d0eb3 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

cryptlib.c: allow application to override OPENSSL_isservice.

PR: 2194
parent 97a6a01f
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -762,6 +762,18 @@ int OPENSSL_isservice(void)
{ HWINSTA h;
  DWORD len;
  WCHAR *name;
  static union { void *p; int (*f)(void); } _OPENSSL_isservice = { NULL };

    if (_OPENSSL_isservice.p == NULL) {
	HANDLE h = GetModuleHandle(NULL);
	if (h != NULL)
	    _OPENSSL_isservice.p = GetProcAddress(h,"_OPENSSL_isservice");
	if (_OPENSSL_isservice.p == NULL)
	    _OPENSSL_isservice.p = (void *)-1;
    }

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

    (void)GetDesktopWindow(); /* return value is ignored */