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>2006-12-12 19:27:32 +0300
committerCorinna Vinschen <corinna@vinschen.de>2006-12-12 19:27:32 +0300
commit5684cfebba943eb10d16216a16793d464c1b2a1d (patch)
treef88d165d561e9ad345c8893c32a422d1ac3a0f3a /winsup/cygwin/cygheap.h
parent815122d8428527e170c0090ed134d18081d1054d (diff)
Partially revert change from 2005-04-03, always running under an
impersonation token, which collides with Vista UAC. * cygheap.h (deimpersonate): revert to self instead of impersonating hProcImpToken. (reimpersonate): Only impersonate if setuid. * dcrt0.cc (dll_crt0_0): Don't initialize hProcImpToken here. (dll_crt0_1): Set privileges on hProcToken. * fork.cc (frok::child): Set privileges on hProcToken. Close handle to hProcImpToken. * grp.cc (internal_getgroups): Use hProcToken instead of hProcImpToken. * security.cc (check_access): Create hProcImpToken on demand here. * security.h (set_process_privilege): Set privileges on hProcToken. (_push_thread_privilege): Use hProcToken instead of hProcImpToken. (pop_thread_privilege): If not setuid'ed, revert to self. * syscalls.cc (setegid32): Drop setting primary group on hProcImpToken. Close handle to hProcImpToken. * uinfo.cc (internal_getlogin): Ditto. * winsup.h (clear_procimptoken): New inline function.
Diffstat (limited to 'winsup/cygwin/cygheap.h')
-rw-r--r--winsup/cygwin/cygheap.h9
1 files changed, 4 insertions, 5 deletions
diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h
index 0c54bad1a..f33feb546 100644
--- a/winsup/cygwin/cygheap.h
+++ b/winsup/cygwin/cygheap.h
@@ -182,14 +182,13 @@ public:
void deimpersonate ()
{
if (issetuid ())
- {
- RevertToSelf ();
- ImpersonateLoggedOnUser (hProcImpToken);
- }
+ RevertToSelf ();
}
bool reimpersonate ()
{
- return ImpersonateLoggedOnUser (issetuid () ? token () : hProcImpToken);
+ if (issetuid ())
+ return ImpersonateLoggedOnUser (token ());
+ return true;
}
bool has_impersonation_tokens ()
{ return external_token != NO_IMPERSONATION