Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2014-02-27 16:57:27 +0400
committerCorinna Vinschen <corinna@vinschen.de>2014-02-27 16:57:27 +0400
commitb39fa2c88da849c7a0bd6a745357b57690501e3d (patch)
tree2afd52e206518e41fc2f38525932ae58f0c7d3b1 /winsup/cygwin/pwdgrp.h
parent8033fd9a65476b2b7d2113f81ad6f4f7dc841816 (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.h58
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);