diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2011-04-29 11:34:05 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2011-04-29 11:34:05 +0400 |
commit | 12eac211c9d8cfe8304b0232cd472bc005d71745 (patch) | |
tree | 3e68a921140bc36e4f15d20194f2a96db1b5fc6a /winsup/cygwin/syscalls.cc | |
parent | 541820d0eefe3859162cce48946c9649752b9b3b (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.cc | 51 |
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; |