From 09593ea30b69057e6d4fd1f89ece6dd802610c0e Mon Sep 17 00:00:00 2001 From: Ivan Zhakov Date: Wed, 15 May 2019 08:12:08 +0000 Subject: win32: Fix handle leak apr_shm_create() implementation. * shmem/win32/shm.c (can_create_global_maps): Close thread/process token after checking for privilege. git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1859270 13f79535-47bb-0310-9956-ffa450edef68 --- shmem/win32/shm.c | 8 ++++++-- 1 file 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; } -- cgit v1.2.1