diff options
author | Ivan Zhakov <ivan@apache.org> | 2019-05-15 08:12:08 +0000 |
---|---|---|
committer | Ivan Zhakov <ivan@apache.org> | 2019-05-15 08:12:08 +0000 |
commit | 09593ea30b69057e6d4fd1f89ece6dd802610c0e (patch) | |
tree | 511edceb2507a9d03b1a5e0290994c60e2d92895 /shmem | |
parent | b90a57527bbbd2432d04b6644d81866d42194fb1 (diff) | |
download | apr-09593ea30b69057e6d4fd1f89ece6dd802610c0e.tar.gz |
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
Diffstat (limited to 'shmem')
-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; } |