diff options
author | Pierre Humblet <phumblet@phumblet.no-ip.org> | 2005-01-08 18:33:07 +0000 |
---|---|---|
committer | Pierre Humblet <phumblet@phumblet.no-ip.org> | 2005-01-08 18:33:07 +0000 |
commit | a6888c92d9a775d8ee8169da23c2d81e8df894d1 (patch) | |
tree | ee43f359d4b878102011d12cc336400b7b202030 | |
parent | fcab88fec67d4dd45301a9e09c3da76bb6c70a84 (diff) | |
download | cygnal-a6888c92d9a775d8ee8169da23c2d81e8df894d1.tar.gz cygnal-a6888c92d9a775d8ee8169da23c2d81e8df894d1.tar.bz2 cygnal-a6888c92d9a775d8ee8169da23c2d81e8df894d1.zip |
2005-01-08 Pierre Humblet <pierre.humblet@ieee.org>
* syscalls.cc (seteuid32): Only change the default dacl when
seteuid succeeds. Do not close HKCU.
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/syscalls.cc | 29 |
2 files changed, 18 insertions, 16 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 08fb92d72..1192a06f4 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2005-01-08 Pierre Humblet <pierre.humblet@ieee.org> + + * syscalls.cc (seteuid32): Only change the default dacl when + seteuid succeeds. Do not close HKCU. + 2005-01-06 Corinna Vinschen <corinna@vinschen.de> * fhandler_process.cc: Use strcasematch instead of strcasecmp diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 167b14dad..a9583ed1e 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -2066,7 +2066,7 @@ seteuid32 (__uid32_t uid) if (!wincap.has_security () && pw_new) { load_registry_hive (pw_new->pw_name); - goto success_9x; + goto success_9x; } if (!usersid.getfrompw (pw_new)) { @@ -2103,16 +2103,6 @@ seteuid32 (__uid32_t uid) debug_printf ("Found token %d", new_token); - /* Set process def dacl to allow access to impersonated token */ - if (sec_acl ((PACL) dacl_buf, true, true, usersid)) - { - tdacl.DefaultDacl = (PACL) dacl_buf; - if (!SetTokenInformation (ptok, TokenDefaultDacl, - &tdacl, sizeof dacl_buf)) - debug_printf ("SetTokenInformation" - "(TokenDefaultDacl), %E"); - } - /* If no impersonation token is available, try to authenticate using NtCreateToken () or subauthentication. */ if (new_token == INVALID_HANDLE_VALUE) @@ -2132,6 +2122,16 @@ seteuid32 (__uid32_t uid) cygheap->user.internal_token = new_token; } + /* Set process def dacl to allow access to impersonated token */ + if (sec_acl ((PACL) dacl_buf, true, true, usersid)) + { + tdacl.DefaultDacl = (PACL) dacl_buf; + if (!SetTokenInformation (ptok, TokenDefaultDacl, + &tdacl, sizeof dacl_buf)) + debug_printf ("SetTokenInformation" + "(TokenDefaultDacl), %E"); + } + if (new_token != ptok) { /* Avoid having HKCU use default user */ @@ -2166,11 +2166,8 @@ success_9x: cygheap->user.set_name (pw_new->pw_name); myself->uid = uid; groups.ischanged = FALSE; - if (!issamesid) /* MS KB 199190 */ - { - RegCloseKey (HKEY_CURRENT_USER); - user_shared_initialize (true); - } + if (!issamesid) + user_shared_initialize (true); return 0; failed: |