diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2000-06-16 19:36:07 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2000-06-16 19:36:07 +0000 |
commit | 64b3062937b791faafddc02e9d38102a75b37a7a (patch) | |
tree | 48895becfe9d6a9816a99573c1dd716878d67fa4 /winsup/cygwin/uinfo.cc | |
parent | 3875d9e65223107ecc5ee8ce7f6510e092779da9 (diff) | |
download | newlib-64b3062937b791faafddc02e9d38102a75b37a7a.zip newlib-64b3062937b791faafddc02e9d38102a75b37a7a.tar.gz newlib-64b3062937b791faafddc02e9d38102a75b37a7a.tar.bz2 |
* cygwin.din: Define symbols for `cygwin_logon_user' and
`cygwin_set_impersonation_token'.
* dcrt0.cc (dll_crt0_1): Eliminate superfluous conditional
statements.
Add load statements for `ImpersonateLoggedOnUser', `LogonUserA'
and `RevertToSelf'.
* fork.cc (fork): Care for correct impersonation of parent
and child process.
* security.cc (cygwin_set_impersonation_token): New function.
(cygwin_logon_user): Ditto.
shared.h (class pinfo): New members `orig_uid', `orig_gid',
`real_uid' nad `real_gid'.
spawn.cc (spawn_guts): Care for impersonation when starting
child process in a different user context.
* syscalls.cc (setgid): Call `setegid' now. Set real_gid.
(setuid): Call `seteuid' now. Set real_uid.
(seteuid): Functionality moved from setuid to here. Care for
correct impersonation.
(setegid): Functionality moved from setgid to here.
* uinfo.cc (uinfo_init): Initialization of additional pinfo
members.
(getuid): Return real uid.
(getgid): Return real gid.
(geteuid): Return effective uid.
(getegid): Return effective gid.
include/sys/cygwin.h: Add prototypes for `cygwin_logon_user' and
`cygwin_set_impersonation_token'.
include/cygwin/version.h: Bumb API minor version to 22.
Diffstat (limited to 'winsup/cygwin/uinfo.cc')
-rw-r--r-- | winsup/cygwin/uinfo.cc | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 90bb727..b50f155 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -126,6 +126,11 @@ uinfo_init () myself->uid = DEFAULT_UID; myself->gid = DEFAULT_GID; } + /* Set to non impersonated value. */ + myself->token = INVALID_HANDLE_VALUE; + myself->impersonated = TRUE; + myself->orig_uid = myself->real_uid = myself->uid; + myself->orig_gid = myself->real_gid = myself->gid; } extern "C" char * @@ -143,25 +148,25 @@ getlogin (void) extern "C" uid_t getuid (void) { - return myself->uid; + return myself->real_uid; } extern "C" gid_t getgid (void) { - return myself->gid; + return myself->real_gid; } extern "C" uid_t geteuid (void) { - return getuid (); + return myself->uid; } extern "C" gid_t getegid (void) { - return getgid (); + return myself->gid; } /* Not quite right - cuserid can change, getlogin can't */ |