summaryrefslogtreecommitdiff
path: root/shmem
diff options
context:
space:
mode:
authorIvan Zhakov <ivan@apache.org>2019-05-15 08:12:08 +0000
committerIvan Zhakov <ivan@apache.org>2019-05-15 08:12:08 +0000
commit09593ea30b69057e6d4fd1f89ece6dd802610c0e (patch)
tree511edceb2507a9d03b1a5e0290994c60e2d92895 /shmem
parentb90a57527bbbd2432d04b6644d81866d42194fb1 (diff)
downloadapr-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.c8
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;
}