diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index c04e25c95..056fac7dc 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -699,7 +699,6 @@ LoadDLLfuncEx (CreateEnvironmentBlock, 12, userenv, 1) LoadDLLfuncEx2 (CreateProfile, 16, userenv, 1, 1) LoadDLLfunc (DestroyEnvironmentBlock, 4, userenv) LoadDLLfunc (LoadUserProfileW, 8, userenv) -LoadDLLfunc (UnloadUserProfile, 8, userenv) LoadDLLfuncEx3 (waveInAddBuffer, 12, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveInClose, 4, winmm, 1, 0, 1) diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h index 4d9feb072..8877cc358 100644 --- a/winsup/cygwin/cygheap.h +++ b/winsup/cygwin/cygheap.h @@ -106,9 +106,6 @@ public: HANDLE curr_primary_token; /* Just a copy of external or internal token */ HANDLE curr_imp_token; /* impersonation token derived from primary token */ - HANDLE imp_profile_token; /* Handle to the token used to load the - user profile in "imp_profile" */ - HANDLE imp_profile; /* Handle to the user profile */ bool ext_token_is_restricted; /* external_token is restricted token */ bool curr_token_is_restricted; /* curr_primary_token is restricted token */ bool setuid_to_restricted; /* switch to restricted token by setuid () */ @@ -193,11 +190,6 @@ public: { return effec_cygsid.string (buf); } - void exit () - { - if (imp_profile_token && imp_profile) - unload_user_profile (imp_profile_token, imp_profile); - } const char __reg3 *test_uid (char *&, const char *, size_t); }; diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index e29c00746..064299e0c 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -224,7 +224,6 @@ pinfo::exit (DWORD n) exitcode = ((exitcode & 0xff) << 8) | ((exitcode >> 8) & 0xff); sigproc_printf ("Calling dlls.cleanup_forkables n %y, exitcode %y", n, exitcode); dlls.cleanup_forkables (); - cygheap->user.exit (); sigproc_printf ("Calling ExitProcess n %y, exitcode %y", n, exitcode); if (!TerminateProcess (GetCurrentProcess (), exitcode)) system_printf ("TerminateProcess failed, %E"); diff --git a/winsup/cygwin/sec_auth.cc b/winsup/cygwin/sec_auth.cc index 36874b63e..195d20ca9 100644 --- a/winsup/cygwin/sec_auth.cc +++ b/winsup/cygwin/sec_auth.cc @@ -316,15 +316,6 @@ load_user_profile (HANDLE token, struct passwd *pw, cygpsid &usersid) return pi.hProfile; } -bool -unload_user_profile (HANDLE token, HANDLE profile) -{ - bool ret = UnloadUserProfile (token, profile); - if (!ret) - debug_printf ("UnloadUserProfile, %E"); - return ret; -} - HANDLE lsa_open_policy (PWCHAR server, ACCESS_MASK access) { diff --git a/winsup/cygwin/security.h b/winsup/cygwin/security.h index 0ce7e8d7a..483a527e7 100644 --- a/winsup/cygwin/security.h +++ b/winsup/cygwin/security.h @@ -502,7 +502,6 @@ PWCHAR get_user_profile_directory (PCWSTR sidstr, PWCHAR path, SIZE_T path_len); /* Load user profile if it's not already loaded. */ HANDLE load_user_profile (HANDLE token, struct passwd *pw, cygpsid &sid); -bool unload_user_profile (HANDLE token, HANDLE profile); HANDLE lsa_open_policy (PWCHAR server, ACCESS_MASK access); void lsa_close_policy (HANDLE lsa); diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index a73af6748..172b7c4f6 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -3603,21 +3603,8 @@ seteuid32 (uid_t uid) { NTSTATUS status; - if (!request_restricted_uid_switch - && new_token != cygheap->user.imp_profile_token) - { - if (cygheap->user.imp_profile_token && cygheap->user.imp_profile) - unload_user_profile (cygheap->user.imp_profile_token, - cygheap->user.imp_profile); - cygheap->user.imp_profile = load_user_profile (new_token, pw_new, - usersid); - if (cygheap->user.imp_profile) - { - cygheap->user.imp_profile_token = new_token; - SetHandleInformation (cygheap->user.imp_profile, - HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT); - } - } + if (!request_restricted_uid_switch) + load_user_profile (new_token, pw_new, usersid); /* Try setting owner to same value as user. */ status = NtSetInformationToken (new_token, TokenOwner, @@ -3647,7 +3634,7 @@ seteuid32 (uid_t uid) issamesid = (usersid == cygheap->user.sid ()); cygheap->user.set_sid (usersid); cygheap->user.curr_primary_token = new_token == hProcToken ? NO_IMPERSONATION - : new_token; + : new_token; cygheap->user.curr_token_is_restricted = false; cygheap->user.setuid_to_restricted = false; if (cygheap->user.curr_imp_token != NO_IMPERSONATION) diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 49614cb45..bfcce00da 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -239,8 +239,6 @@ uinfo_init () cygheap->user.internal_token = NO_IMPERSONATION; cygheap->user.curr_primary_token = NO_IMPERSONATION; cygheap->user.curr_imp_token = NO_IMPERSONATION; - cygheap->user.imp_profile_token = NO_IMPERSONATION; - cygheap->user.imp_profile = NULL; cygheap->user.ext_token_is_restricted = false; cygheap->user.curr_token_is_restricted = false; cygheap->user.setuid_to_restricted = false;