* include/cygwin/version.h: Bump API minor version.
* cygheap.h (class cygheap_user): Add member groups.
* security.h (class cygsidlist): Add members type and maxcount,
methods position, addfromgr, alloc_sids and free_sids and
operator+= (const PSID psid). Modify contains () to call
position () and optimize add () to use maxcount.
(class user_groups): Create.
Update declarations of verify_token and create_token.
* security.cc (cygsidlist::alloc_sids): New.
(cygsidlist::free_sids): New.
(get_token_group_sidlist): Create from get_group_sidlist.
(get_initgroups_sidlist): Create from get_group_sidlist.
(get_group_sidlist): Suppress.
(get_setgroups_sidlist): Create.
(verify_token): Modify arguments. Add setgroups case.
(create_token): Modify arguments. Call get_initgroups_sidlist and
get_setgroups_sidlist as needed. Set SE_GROUP_LOGON_ID from auth_pos
outside of the loop. Rename the various group sid lists consistently.
* syscalls.cc (seteuid32): Modify to use cygheap->user.groups.
(setegid32): Call cygheap->user.groups.update_pgrp.
* grp.cc (setgroups): Create.
(setgroups32): Create.
* uinfo.cc (internal_getlogin): Initialize and update user.groups.pgsid.
* cygwin.din: Add setgroups and setgroups32.
|
||
|---|---|---|
| .. | ||
| arpa | ||
| asm | ||
| cygwin | ||
| net | ||
| netinet | ||
| sys | ||
| a.out.h | ||
| dlfcn.h | ||
| exceptions.h | ||
| fcntl.h | ||
| features.h | ||
| fnmatch.h | ||
| getopt.h | ||
| glob.h | ||
| icmp.h | ||
| io.h | ||
| lastlog.h | ||
| limits.h | ||
| mapi.h | ||
| memory.h | ||
| mntent.h | ||
| netdb.h | ||
| paths.h | ||
| poll.h | ||
| pthread.h | ||
| sched.h | ||
| semaphore.h | ||
| strings.h | ||
| sysexits.h | ||
| syslog.h | ||
| termio.h | ||
| tzfile.h | ||
| wchar.h | ||