From 890fbf2e30c2a8c8d4b64b2044961bd49afc4dce Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Mon, 8 Jun 2009 23:57:11 +0200 Subject: Make "net ads listmem" also work for domain groups --- source3/utils/net_sam.c | 48 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/source3/utils/net_sam.c b/source3/utils/net_sam.c index 5f41f21aaa..ddf4d4e162 100644 --- a/source3/utils/net_sam.c +++ b/source3/utils/net_sam.c @@ -1214,6 +1214,8 @@ static int net_sam_listmem(struct net_context *c, int argc, const char **argv) { const char *groupdomain, *groupname; DOM_SID group; + DOM_SID *members = NULL; + size_t i, num_members = 0; enum lsa_SidType grouptype; NTSTATUS status; @@ -1230,37 +1232,55 @@ static int net_sam_listmem(struct net_context *c, int argc, const char **argv) if ((grouptype == SID_NAME_ALIAS) || (grouptype == SID_NAME_WKN_GRP)) { - DOM_SID *members = NULL; - size_t i, num_members = 0; - status = pdb_enum_aliasmem(&group, talloc_tos(), &members, &num_members); + if (!NT_STATUS_IS_OK(status)) { + d_fprintf(stderr, "Listing group members failed with " + "%s\n", nt_errstr(status)); + return -1; + } + } else if (grouptype == SID_NAME_DOM_GRP) { + uint32_t *rids; + status = pdb_enum_group_members(talloc_tos(), &group, + &rids, &num_members); if (!NT_STATUS_IS_OK(status)) { d_fprintf(stderr, "Listing group members failed with " "%s\n", nt_errstr(status)); return -1; } - d_printf("%s\\%s has %u members\n", groupdomain, groupname, - (unsigned int)num_members); - for (i=0; i