summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/security.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2002-08-02 11:00:18 +0000
committerCorinna Vinschen <corinna@vinschen.de>2002-08-02 11:00:18 +0000
commit23d93d8db713189abb9616332ef77837a0e6c808 (patch)
treee9186d77fdcdf4935f2ea0bd512a8848187e28ac /winsup/cygwin/security.cc
parent04875a95c879a55f68ef2956b172a96d3fea7c95 (diff)
downloadcygnal-23d93d8db713189abb9616332ef77837a0e6c808.tar.gz
cygnal-23d93d8db713189abb9616332ef77837a0e6c808.tar.bz2
cygnal-23d93d8db713189abb9616332ef77837a0e6c808.zip
* security.cc (verify_token): Do not reject a token just because
the supplementary group list is missing Everyone or a groupsid equal to usersid, or because the primary group is not in the token, as long as it is equal to the usersid. * syscalls.cc (seteuid32): Use common code for all successful returns. * grp.cc (getgroups32): Never includes Everyone in the output.
Diffstat (limited to 'winsup/cygwin/security.cc')
-rw-r--r--winsup/cygwin/security.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/winsup/cygwin/security.cc b/winsup/cygwin/security.cc
index d12e33359..f22c7dc8f 100644
--- a/winsup/cygwin/security.cc
+++ b/winsup/cygwin/security.cc
@@ -779,13 +779,16 @@ verify_token (HANDLE token, cygsid &usersid, user_groups &groups, BOOL *pintern)
saw[pos] = TRUE;
else if (groups.pgsid == gsid)
sawpg = TRUE;
- else
+ else if (gsid != well_known_world_sid &&
+ gsid != usersid)
goto done;
}
for (int gidx = 0; gidx < groups.sgsids.count; gidx++)
if (!saw[gidx])
goto done;
- if (sawpg || groups.sgsids.contains (groups.pgsid))
+ if (sawpg ||
+ groups.sgsids.contains (groups.pgsid) ||
+ groups.pgsid == usersid)
ret = TRUE;
}
done: