summaryrefslogtreecommitdiffstats
path: root/source/nsswitch/winbindd_group.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/nsswitch/winbindd_group.c')
-rw-r--r--source/nsswitch/winbindd_group.c54
1 files changed, 4 insertions, 50 deletions
diff --git a/source/nsswitch/winbindd_group.c b/source/nsswitch/winbindd_group.c
index f0d3bc43ea6..51618bd00fd 100644
--- a/source/nsswitch/winbindd_group.c
+++ b/source/nsswitch/winbindd_group.c
@@ -920,52 +920,6 @@ enum winbindd_result winbindd_list_groups(struct winbindd_cli_state *state)
return WINBINDD_OK;
}
-static BOOL enum_alias_memberships(const DOM_SID *member_sid,
- DOM_SID **aliases, int *num_aliases)
-{
- TALLOC_CTX *mem_ctx = talloc_init("enum_alias_memberships");
-
- uint32 *rids = NULL;
- int i, num_rids = 0;
-
- BOOL result = False;
-
- if (mem_ctx == NULL)
- return False;
-
- *aliases = NULL;
- *num_aliases = 0;
-
- if (!pdb_enum_alias_memberships(mem_ctx, get_global_sam_sid(),
- member_sid, 1, &rids, &num_rids))
- goto done;
-
- for (i=0; i<num_rids; i++) {
- DOM_SID alias_sid;
- sid_copy(&alias_sid, get_global_sam_sid());
- sid_append_rid(&alias_sid, rids[i]);
- add_sid_to_array(NULL, &alias_sid, aliases, num_aliases);
- }
-
- if (!pdb_enum_alias_memberships(mem_ctx, &global_sid_Builtin,
- member_sid, 1, &rids, &num_rids))
- goto done;
-
- for (i=0; i<num_rids; i++) {
- DOM_SID alias_sid;
- sid_copy(&alias_sid, &global_sid_Builtin);
- sid_append_rid(&alias_sid, rids[i]);
- add_sid_to_array(NULL, &alias_sid, aliases, num_aliases);
- }
-
- result = True;
- done:
- if (mem_ctx != NULL)
- talloc_destroy(mem_ctx);
-
- return result;
-}
-
static void add_local_gids_from_sid(DOM_SID *sid, gid_t **gids, int *num)
{
gid_t gid;
@@ -983,7 +937,7 @@ static void add_local_gids_from_sid(DOM_SID *sid, gid_t **gids, int *num)
/* Add nested group memberships */
- if (!enum_alias_memberships(sid, &aliases, &num_aliases))
+ if (!pdb_enum_alias_memberships(sid, 1, &aliases, &num_aliases))
return;
for (j=0; j<num_aliases; j++) {
@@ -999,7 +953,7 @@ static void add_local_gids_from_sid(DOM_SID *sid, gid_t **gids, int *num)
continue;
}
- add_gid_to_array_unique(NULL, gid, gids, num);
+ add_gid_to_array_unique(gid, gids, num);
}
SAFE_FREE(aliases);
}
@@ -1020,7 +974,7 @@ static void add_gids_from_group_sid(DOM_SID *sid, gid_t **gids, int *num)
sid_string_static(sid)));
if (NT_STATUS_IS_OK(idmap_sid_to_gid(sid, &gid, 0)))
- add_gid_to_array_unique(NULL, gid, gids, num);
+ add_gid_to_array_unique(gid, gids, num);
add_local_gids_from_sid(sid, gids, num);
}
@@ -1224,7 +1178,7 @@ static void add_local_sids_from_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
DOM_SID *aliases = NULL;
int i, num_aliases = 0;
- if (!enum_alias_memberships(sid, &aliases, &num_aliases))
+ if (!pdb_enum_alias_memberships(sid, 1, &aliases, &num_aliases))
return;
if (num_aliases == 0)