diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2002-08-02 11:00:18 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2002-08-02 11:00:18 +0000 |
commit | 23d93d8db713189abb9616332ef77837a0e6c808 (patch) | |
tree | e9186d77fdcdf4935f2ea0bd512a8848187e28ac /winsup/cygwin/security.cc | |
parent | 04875a95c879a55f68ef2956b172a96d3fea7c95 (diff) | |
download | cygnal-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.cc | 7 |
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: |