diff options
-rw-r--r-- | shmem/win32/shm.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/shmem/win32/shm.c b/shmem/win32/shm.c index b01411ebd..0ca8247f9 100644 --- a/shmem/win32/shm.c +++ b/shmem/win32/shm.c @@ -87,10 +87,12 @@ static int can_create_global_maps(void) ok = OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken); } - if (ok) { - ok = LookupPrivilegeValue(NULL, SE_CREATE_GLOBAL_NAME, &priv_id); + if (!ok) { + return 0; } + ok = LookupPrivilegeValue(NULL, SE_CREATE_GLOBAL_NAME, &priv_id); + if (ok) { privs.PrivilegeCount = 1; privs.Control = PRIVILEGE_SET_ALL_NECESSARY; @@ -99,6 +101,8 @@ static int can_create_global_maps(void) ok = PrivilegeCheck(hToken, &privs, &has_priv); } + CloseHandle(hToken); + if (ok && !has_priv) { return 0; } |