Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2011-04-29 11:34:05 +0400
committerCorinna Vinschen <corinna@vinschen.de>2011-04-29 11:34:05 +0400
commit12eac211c9d8cfe8304b0232cd472bc005d71745 (patch)
tree3e68a921140bc36e4f15d20194f2a96db1b5fc6a /winsup/cygwin/syscalls.cc
parent541820d0eefe3859162cce48946c9649752b9b3b (diff)
* advapi32.cc (GetTokenInformation): Remove.
(SetTokenInformation): Remove. * grp.cc: Replace above functions throughout with their ntdll.dll equivalent. * sec_auth.cc: Ditto. * syscalls.cc: Ditto. * uinfo.cc: Ditto.
Diffstat (limited to 'winsup/cygwin/syscalls.cc')
-rw-r--r--winsup/cygwin/syscalls.cc51
1 files changed, 33 insertions, 18 deletions
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index c05c58798..40b590af7 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -2961,6 +2961,8 @@ seteuid32 (__uid32_t uid)
if (new_token != hProcToken)
{
+ NTSTATUS status;
+
if (!request_restricted_uid_switch)
{
/* Avoid having HKCU use default user */
@@ -2969,21 +2971,27 @@ seteuid32 (__uid32_t uid)
}
/* Try setting owner to same value as user. */
- if (!SetTokenInformation (new_token, TokenOwner,
- &usersid, sizeof usersid))
- debug_printf ("SetTokenInformation(user.token, TokenOwner), %E");
+ status = NtSetInformationToken (new_token, TokenOwner,
+ &usersid, sizeof usersid);
+ if (!NT_SUCCESS (status))
+ debug_printf ("NtSetInformationToken (user.token, TokenOwner), %p",
+ status);
/* Try setting primary group in token to current group */
- if (!SetTokenInformation (new_token, TokenPrimaryGroup,
- &groups.pgsid, sizeof (cygsid)))
- debug_printf ("SetTokenInformation(user.token, TokenPrimaryGroup), %E");
+ status = NtSetInformationToken (new_token, TokenPrimaryGroup,
+ &groups.pgsid, sizeof (cygsid));
+ if (!NT_SUCCESS (status))
+ debug_printf ("NtSetInformationToken (user.token, TokenPrimaryGroup),"
+ "%p", status);
/* Try setting default DACL */
PACL dacl_buf = (PACL) alloca (MAX_DACL_LEN (5));
if (sec_acl (dacl_buf, true, true, usersid))
{
TOKEN_DEFAULT_DACL tdacl = { dacl_buf };
- if (!SetTokenInformation (new_token, TokenDefaultDacl,
- &tdacl, sizeof (tdacl)))
- debug_printf ("SetTokenInformation (TokenDefaultDacl), %E");
+ status = NtSetInformationToken (new_token, TokenDefaultDacl,
+ &tdacl, sizeof (tdacl));
+ if (!NT_SUCCESS (status))
+ debug_printf ("NtSetInformationToken (TokenDefaultDacl), %p",
+ status);
}
}
@@ -3095,6 +3103,7 @@ setegid32 (__gid32_t gid)
return 0;
}
+ NTSTATUS status;
user_groups * groups = &cygheap->user.groups;
cygsid gsid;
struct __group32 * gr = internal_getgrgid (gid);
@@ -3110,17 +3119,23 @@ setegid32 (__gid32_t gid)
if (cygheap->user.issetuid ())
{
/* If impersonated, update impersonation token... */
- if (!SetTokenInformation (cygheap->user.primary_token (),
- TokenPrimaryGroup, &gsid, sizeof gsid))
- debug_printf ("SetTokenInformation(primary_token, "
- "TokenPrimaryGroup), %E");
- if (!SetTokenInformation (cygheap->user.imp_token (), TokenPrimaryGroup,
- &gsid, sizeof gsid))
- debug_printf ("SetTokenInformation(token, TokenPrimaryGroup), %E");
+ status = NtSetInformationToken (cygheap->user.primary_token (),
+ TokenPrimaryGroup, &gsid, sizeof gsid);
+ if (!NT_SUCCESS (status))
+ debug_printf ("NtSetInformationToken (primary_token, "
+ "TokenPrimaryGroup), %p", status);
+ status = NtSetInformationToken (cygheap->user.imp_token (),
+ TokenPrimaryGroup, &gsid, sizeof gsid);
+ if (!NT_SUCCESS (status))
+ debug_printf ("NtSetInformationToken (token, TokenPrimaryGroup), %p",
+ status);
}
cygheap->user.deimpersonate ();
- if (!SetTokenInformation (hProcToken, TokenPrimaryGroup, &gsid, sizeof gsid))
- debug_printf ("SetTokenInformation(hProcToken, TokenPrimaryGroup), %E");
+ status = NtSetInformationToken (hProcToken, TokenPrimaryGroup,
+ &gsid, sizeof gsid);
+ if (!NT_SUCCESS (status))
+ debug_printf ("NtSetInformationToken (hProcToken, TokenPrimaryGroup), %p",
+ status);
clear_procimptoken ();
cygheap->user.reimpersonate ();
return 0;