* 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.
This commit is contained in:
@@ -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);
|
||||
|
Reference in New Issue
Block a user