diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2014-02-27 16:57:27 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2014-02-27 16:57:27 +0400 |
commit | b39fa2c88da849c7a0bd6a745357b57690501e3d (patch) | |
tree | 2afd52e206518e41fc2f38525932ae58f0c7d3b1 /winsup/cygwin/pwdgrp.h | |
parent | 8033fd9a65476b2b7d2113f81ad6f4f7dc841816 (diff) |
* autoload.cc (CheckTokenMembership): Import.
* external.cc (cygwin_internal): Call get_uid/get_gid instead of get_id.
* grp.cc (internal_getgrsid): Take additional cyg_ldap pointer.
Forward to pwdgrp::add_group_from_windows.
(internal_getgrnam): Ditto.
(internal_getgrgid): Ditto.
(gr_ent::enumerate_local): Drop ugid_caching bool from call to
pwdgrp::fetch_account_from_windows.
(getgroups32): Rename from internal_getgroups and drop getgroups32 stub.
Drop srchsid parameter and code handling it. Add local cyg_ldap
instance and forward to internal_getgrXXX.
(getgroups): Call getgroups32.
(get_groups): Add local cyg_ldap instance and forward to
internal_getgrXXX.
(getgrouplist): Ditto.
(setgroups32): Ditto.
* ldap.cc (cyg_ldap::open): Don't call close. Return true if connection
is already open.
(cyg_ldap::remap_uid): Forward this to internal_getpwsid.
(cyg_ldap::remap_gid): Forward this to internal_getgrsid.
* passwd.cc (internal_getpwsid): Take additional cyg_ldap pointer.
Forward to pwdgrp::add_user_from_windows.
(internal_getpwnam): Ditto.
(internal_getpwuid): Ditto.
(pg_ent::enumerate_builtin): Drop ugid_caching bool from call to
pwdgrp::fetch_account_from_windows.
(pg_ent::enumerate_sam): Ditto.
(pg_ent::enumerate_ad): Ditto. Forward local cldap instead.
* pwdgrp.h (internal_getpwsid): Align declaration to above change.
(internal_getpwnam): Ditto.
(internal_getpwuid): Ditto.
(internal_getgrsid): Ditto.
(internal_getgrgid): Ditto.
(internal_getgrnam): Ditto.
(internal_getgroups): Drop declaration.
(pwdgrp::add_account_from_windows): Align declaration to below change.
(pwdgrp::add_user_from_windows): Ditto.
(pwdgrp::add_group_from_windows): Ditto.
* sec_acl.cc (setacl): Add local cyg_ldap instance and forward to
internal_getpwuid and internal_getgrgid.
(getacl): Add local cyg_ldap instance and forward to cygpsid::get_id.
(aclfromtext32): Add local cyg_ldap instance and forward to
internal_getpwnam and internal_getgrnam.
* sec_helper.cc (cygpsid::get_id): Take additional cyg_ldap pointer.
Forward to internal_getgrsid and internal_getpwsid.
(get_sids_info): Drop ldap_open. Forward local cldap to
internal_getpwsid and internal_getgrXXX. Call CheckTokenMembership
rather than internal_getgroups.
* security.h (cygpsid::get_id): Add cyg_ldap pointer, drop default
parameter.
(cygpsid::get_uid): Add cyg_ldap pointer. Call get_id accordingly.
(cygpsid::get_gid): Ditto.
* uinfo.cc (internal_getlogin): Add local cyg_ldap instance and forward
to internal_getpwXXX and internal_getgrXXX calls.
(pwdgrp::add_account_from_windows): Take additional cyg_ldap pointer.
Forward to pwdgrp::fetch_account_from_windows.
(fetch_posix_offset): Drop ldap_open argument and handling. Get
cyg_ldap instance as pointer.
(pwdgrp::fetch_account_from_windows): Take additional cyg_ldap pointer.
Use it if it's not NULL, local instance otherwise. Drop ldap_open.
Drop fetching extended group arguments from AD for speed.
Diffstat (limited to 'winsup/cygwin/pwdgrp.h')
-rw-r--r-- | winsup/cygwin/pwdgrp.h | 58 |
1 files changed, 31 insertions, 27 deletions
diff --git a/winsup/cygwin/pwdgrp.h b/winsup/cygwin/pwdgrp.h index 808bddb9f..5a8267cea 100644 --- a/winsup/cygwin/pwdgrp.h +++ b/winsup/cygwin/pwdgrp.h @@ -12,17 +12,20 @@ details. */ #pragma once +#include "sync.h" +#include "ldap.h" +#include "miscfuncs.h" + /* These functions are needed to allow searching and walking through the passwd and group lists */ -extern struct passwd *internal_getpwsid (cygpsid &); +extern struct passwd *internal_getpwsid (cygpsid &, cyg_ldap * = NULL); extern struct passwd *internal_getpwsid_from_db (cygpsid &sid); -extern struct passwd *internal_getpwnam (const char *); -extern struct passwd *internal_getpwuid (uid_t); -extern struct group *internal_getgrsid (cygpsid &); +extern struct passwd *internal_getpwnam (const char *, cyg_ldap * = NULL); +extern struct passwd *internal_getpwuid (uid_t, cyg_ldap * = NULL); +extern struct group *internal_getgrsid (cygpsid &, cyg_ldap * = NULL); extern struct group *internal_getgrsid_from_db (cygpsid &sid); -extern struct group *internal_getgrgid (gid_t); -extern struct group *internal_getgrnam (const char *); -int internal_getgroups (int, gid_t *, cygpsid * = NULL); +extern struct group *internal_getgrgid (gid_t, cyg_ldap * = NULL); +extern struct group *internal_getgrnam (const char *, cyg_ldap * = NULL); /* These functions are called from mkpasswd/mkgroup via cygwin_internal. */ void *setpwent_filtered (int enums, PCWSTR enum_tdoms); @@ -32,10 +35,6 @@ void *setgrent_filtered (int enums, PCWSTR enum_tdoms); void *getgrent_filtered (void *gr); void endgrent_filtered (void *gr); -#include "sync.h" -#include "ldap.h" -#include "miscfuncs.h" - enum fetch_user_arg_type_t { SID_arg, NAME_arg, @@ -107,13 +106,16 @@ class pwdgrp void *add_account_from_file (cygpsid &sid); void *add_account_from_file (const char *name); void *add_account_from_file (uint32_t id); - void *add_account_from_windows (cygpsid &sid, bool group); - void *add_account_from_windows (const char *name, bool group); - void *add_account_from_windows (uint32_t id, bool group); + void *add_account_from_windows (cygpsid &sid, bool group, + cyg_ldap *pldap = NULL); + void *add_account_from_windows (const char *name, bool group, + cyg_ldap *pldap = NULL); + void *add_account_from_windows (uint32_t id, bool group, + cyg_ldap *pldap = NULL); char *fetch_account_from_line (fetch_user_arg_t &arg, const char *line); char *fetch_account_from_file (fetch_user_arg_t &arg); char *fetch_account_from_windows (fetch_user_arg_t &arg, bool group, - bool ugid_caching = true); + cyg_ldap *pldap = NULL); pwdgrp *prep_tls_pwbuf (); pwdgrp *prep_tls_grbuf (); @@ -131,12 +133,13 @@ public: { return (struct passwd *) add_account_from_file (name); } struct passwd *add_user_from_file (uint32_t id) { return (struct passwd *) add_account_from_file (id); } - struct passwd *add_user_from_windows (cygpsid &sid) - { return (struct passwd *) add_account_from_windows (sid, false); } - struct passwd *add_user_from_windows (const char *name) - { return (struct passwd *) add_account_from_windows (name, false); } - struct passwd *add_user_from_windows (uint32_t id) - { return (struct passwd *) add_account_from_windows (id, false); } + struct passwd *add_user_from_windows (cygpsid &sid, cyg_ldap *pldap = NULL) + { return (struct passwd *) add_account_from_windows (sid, false, pldap); } + struct passwd *add_user_from_windows (const char *name, + cyg_ldap* pldap = NULL) + { return (struct passwd *) add_account_from_windows (name, false, pldap); } + struct passwd *add_user_from_windows (uint32_t id, cyg_ldap *pldap = NULL) + { return (struct passwd *) add_account_from_windows (id, false, pldap); } struct passwd *find_user (cygpsid &sid); struct passwd *find_user (const char *name); struct passwd *find_user (uid_t uid); @@ -149,12 +152,13 @@ public: { return (struct group *) add_account_from_file (name); } struct group *add_group_from_file (uint32_t id) { return (struct group *) add_account_from_file (id); } - struct group *add_group_from_windows (cygpsid &sid) - { return (struct group *) add_account_from_windows (sid, true); } - struct group *add_group_from_windows (const char *name) - { return (struct group *) add_account_from_windows (name, true); } - struct group *add_group_from_windows (uint32_t id) - { return (struct group *) add_account_from_windows (id, true); } + struct group *add_group_from_windows (cygpsid &sid, cyg_ldap *pldap = NULL) + { return (struct group *) add_account_from_windows (sid, true, pldap); } + struct group *add_group_from_windows (const char *name, + cyg_ldap *pldap = NULL) + { return (struct group *) add_account_from_windows (name, true, pldap); } + struct group *add_group_from_windows (uint32_t id, cyg_ldap *pldap = NULL) + { return (struct group *) add_account_from_windows (id, true, pldap); } struct group *find_group (cygpsid &sid); struct group *find_group (const char *name); struct group *find_group (gid_t gid); |