summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/sec_helper.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/sec_helper.cc')
-rw-r--r--winsup/cygwin/sec_helper.cc16
1 files changed, 8 insertions, 8 deletions
diff --git a/winsup/cygwin/sec_helper.cc b/winsup/cygwin/sec_helper.cc
index f0b851be8..9d8100431 100644
--- a/winsup/cygwin/sec_helper.cc
+++ b/winsup/cygwin/sec_helper.cc
@@ -329,11 +329,17 @@ int
set_process_privilege (const char *privilege, bool enable, bool use_thread)
{
HANDLE hToken = NULL;
- LUID restore_priv;
+ LUID priv_luid;
TOKEN_PRIVILEGES new_priv, orig_priv;
int ret = -1;
DWORD size;
+ if (!LookupPrivilegeValue (NULL, privilege, &priv_luid))
+ {
+ __seterrno ();
+ goto out;
+ }
+
if ((use_thread
&& !OpenThreadToken (GetCurrentThread (), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES,
0, &hToken))
@@ -345,14 +351,8 @@ set_process_privilege (const char *privilege, bool enable, bool use_thread)
goto out;
}
- if (!LookupPrivilegeValue (NULL, privilege, &restore_priv))
- {
- __seterrno ();
- goto out;
- }
-
new_priv.PrivilegeCount = 1;
- new_priv.Privileges[0].Luid = restore_priv;
+ new_priv.Privileges[0].Luid = priv_luid;
new_priv.Privileges[0].Attributes = enable ? SE_PRIVILEGE_ENABLED : 0;
if (!AdjustTokenPrivileges (hToken, FALSE, &new_priv,