summaryrefslogtreecommitdiff
path: root/source3/nsswitch/winbindd_passdb.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2006-04-02 06:25:11 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:15:51 -0500
commit6c9eaa6880897aabbc56ad3d7bd73dfc69f926f9 (patch)
treed2c7e1efb628d346284f0777b461e32f54607029 /source3/nsswitch/winbindd_passdb.c
parent872d3cea871264eed0159f49fba8621dd357ef1d (diff)
downloadsamba-6c9eaa6880897aabbc56ad3d7bd73dfc69f926f9.tar.gz
samba-6c9eaa6880897aabbc56ad3d7bd73dfc69f926f9.tar.bz2
samba-6c9eaa6880897aabbc56ad3d7bd73dfc69f926f9.zip
r14855: Various fixes:
* depreacte 'acl group control' after discussion with Jeremy and implement functionality as part of 'dos filemode' * fix winbindd on a non-member server to expand local groups * prevent code previously only used by smbd from blindly turning _NO_WINBINDD back on (This used to be commit 4ab372f4cab22225716b5c9a9a08f0c1dbc9928d)
Diffstat (limited to 'source3/nsswitch/winbindd_passdb.c')
-rw-r--r--source3/nsswitch/winbindd_passdb.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/source3/nsswitch/winbindd_passdb.c b/source3/nsswitch/winbindd_passdb.c
index 6c8dafa118..64d811464b 100644
--- a/source3/nsswitch/winbindd_passdb.c
+++ b/source3/nsswitch/winbindd_passdb.c
@@ -301,7 +301,28 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
const DOM_SID *user_sid,
uint32 *num_groups, DOM_SID **user_gids)
{
- return NT_STATUS_NO_SUCH_USER;
+ NTSTATUS result;
+ DOM_SID *groups = NULL;
+ gid_t *gids = NULL;
+ size_t ngroups = 0;
+ struct samu *user;
+
+ if ( (user = samu_new(mem_ctx)) == NULL ) {
+ return NT_STATUS_NO_MEMORY;
+ }
+
+ if ( !pdb_getsampwsid( user, user_sid ) ) {
+ return NT_STATUS_NO_SUCH_USER;
+ }
+
+ result = pdb_enum_group_memberships( mem_ctx, user, &groups, &gids, &ngroups );
+
+ TALLOC_FREE( user );
+
+ *num_groups = (uint32)ngroups;
+ *user_gids = groups;
+
+ return result;
}
static NTSTATUS lookup_useraliases(struct winbindd_domain *domain,