diff options
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 90bb72727..b50f155a2 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 */ |