#include "lib/netapi/netapi.h"
#include "lib/netapi/netapi_private.h"
#include "lib/netapi/libnetapi.h"
+#include "../librpc/gen_ndr/cli_samr.h"
/****************************************************************
****************************************************************/
WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
struct NetGroupAdd *r)
{
- struct cli_state *cli = NULL;
struct rpc_pipe_client *pipe_cli = NULL;
NTSTATUS status;
WERROR werr;
- POLICY_HND connect_handle, domain_handle, group_handle;
+ struct policy_handle connect_handle, domain_handle, group_handle;
struct lsa_String lsa_group_name;
struct dom_sid2 *domain_sid = NULL;
uint32_t rid = 0;
werr = libnetapi_open_pipe(ctx, r->in.server_name,
&ndr_table_samr.syntax_id,
- &cli,
&pipe_cli);
if (!W_ERROR_IS_OK(werr)) {
goto done;
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
- SAMR_ACCESS_OPEN_DOMAIN,
+ SAMR_ACCESS_LOOKUP_DOMAIN,
SAMR_DOMAIN_ACCESS_CREATE_GROUP |
SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
&connect_handle,
break;
}
- status = rpccli_samr_CreateDomainGroup(pipe_cli, ctx,
+ status = rpccli_samr_CreateDomainGroup(pipe_cli, talloc_tos(),
&domain_handle,
&lsa_group_name,
SEC_STD_DELETE |
init_lsa_String(&info.description,
info1->grpi1_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
&info);
init_lsa_String(&info.description,
info2->grpi2_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
&info);
if (info2->grpi2_attributes != 0) {
info.attributes.attributes = info2->grpi2_attributes;
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
&info);
init_lsa_String(&info.description,
info3->grpi3_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
&info);
if (info3->grpi3_attributes != 0) {
info.attributes.attributes = info3->grpi3_attributes;
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
&info);
goto done;
failed:
- rpccli_samr_DeleteDomainGroup(pipe_cli, ctx,
+ rpccli_samr_DeleteDomainGroup(pipe_cli, talloc_tos(),
&group_handle);
done:
- if (!cli) {
- return werr;
- }
-
if (is_valid_policy_hnd(&group_handle)) {
- rpccli_samr_Close(pipe_cli, ctx, &group_handle);
+ rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
}
if (ctx->disable_policy_handle_cache) {
WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
struct NetGroupDel *r)
{
- struct cli_state *cli = NULL;
struct rpc_pipe_client *pipe_cli = NULL;
NTSTATUS status;
WERROR werr;
- POLICY_HND connect_handle, domain_handle, group_handle;
+ struct policy_handle connect_handle, domain_handle, group_handle;
struct lsa_String lsa_group_name;
struct dom_sid2 *domain_sid = NULL;
int i = 0;
werr = libnetapi_open_pipe(ctx, r->in.server_name,
&ndr_table_samr.syntax_id,
- &cli,
&pipe_cli);
if (!W_ERROR_IS_OK(werr)) {
goto done;
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
- SAMR_ACCESS_OPEN_DOMAIN,
+ SAMR_ACCESS_LOOKUP_DOMAIN,
SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
&connect_handle,
&domain_handle,
init_lsa_String(&lsa_group_name, r->in.group_name);
- status = rpccli_samr_LookupNames(pipe_cli, ctx,
+ status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
&domain_handle,
1,
&lsa_group_name,
goto done;
}
- status = rpccli_samr_OpenGroup(pipe_cli, ctx,
+ status = rpccli_samr_OpenGroup(pipe_cli, talloc_tos(),
&domain_handle,
SEC_STD_DELETE |
SAMR_GROUP_ACCESS_GET_MEMBERS |
goto done;
}
- status = rpccli_samr_QueryGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_QueryGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
&info);
goto done;
}
#endif
- status = rpccli_samr_QueryGroupMember(pipe_cli, ctx,
+ status = rpccli_samr_QueryGroupMember(pipe_cli, talloc_tos(),
&group_handle,
&rid_array);
if (!NT_STATUS_IS_OK(status)) {
struct lsa_Strings names;
struct samr_Ids member_types;
- status = rpccli_samr_LookupRids(pipe_cli, ctx,
+ status = rpccli_samr_LookupRids(pipe_cli, talloc_tos(),
&domain_handle,
rid_array->count,
rid_array->rids,
for (i=0; i < rid_array->count; i++) {
- status = rpccli_samr_DeleteGroupMember(pipe_cli, ctx,
+ status = rpccli_samr_DeleteGroupMember(pipe_cli, talloc_tos(),
&group_handle,
rid_array->rids[i]);
if (!NT_STATUS_IS_OK(status)) {
}
}
- status = rpccli_samr_DeleteDomainGroup(pipe_cli, ctx,
+ status = rpccli_samr_DeleteDomainGroup(pipe_cli, talloc_tos(),
&group_handle);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
werr = WERR_OK;
done:
- if (!cli) {
- return werr;
- }
-
if (is_valid_policy_hnd(&group_handle)) {
- rpccli_samr_Close(pipe_cli, ctx, &group_handle);
+ rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
}
if (ctx->disable_policy_handle_cache) {
WERROR NetGroupSetInfo_r(struct libnetapi_ctx *ctx,
struct NetGroupSetInfo *r)
{
- struct cli_state *cli = NULL;
struct rpc_pipe_client *pipe_cli = NULL;
NTSTATUS status;
WERROR werr;
- POLICY_HND connect_handle, domain_handle, group_handle;
+ struct policy_handle connect_handle, domain_handle, group_handle;
struct lsa_String lsa_group_name;
struct dom_sid2 *domain_sid = NULL;
werr = libnetapi_open_pipe(ctx, r->in.server_name,
&ndr_table_samr.syntax_id,
- &cli,
&pipe_cli);
if (!W_ERROR_IS_OK(werr)) {
goto done;
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
- SAMR_ACCESS_OPEN_DOMAIN,
+ SAMR_ACCESS_LOOKUP_DOMAIN,
SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
&connect_handle,
&domain_handle,
init_lsa_String(&lsa_group_name, r->in.group_name);
- status = rpccli_samr_LookupNames(pipe_cli, ctx,
+ status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
&domain_handle,
1,
&lsa_group_name,
goto done;
}
- status = rpccli_samr_OpenGroup(pipe_cli, ctx,
+ status = rpccli_samr_OpenGroup(pipe_cli, talloc_tos(),
&domain_handle,
SAMR_GROUP_ACCESS_SET_INFO |
SAMR_GROUP_ACCESS_LOOKUP_INFO,
case 0:
g0 = (struct GROUP_INFO_0 *)r->in.buffer;
init_lsa_String(&info.name, g0->grpi0_name);
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFONAME,
&info);
case 1:
g1 = (struct GROUP_INFO_1 *)r->in.buffer;
init_lsa_String(&info.description, g1->grpi1_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
&info);
case 2:
g2 = (struct GROUP_INFO_2 *)r->in.buffer;
init_lsa_String(&info.description, g2->grpi2_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
&info);
goto done;
}
info.attributes.attributes = g2->grpi2_attributes;
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
&info);
case 3:
g3 = (struct GROUP_INFO_3 *)r->in.buffer;
init_lsa_String(&info.description, g3->grpi3_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
&info);
goto done;
}
info.attributes.attributes = g3->grpi3_attributes;
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
&info);
case 1002:
g1002 = (struct GROUP_INFO_1002 *)r->in.buffer;
init_lsa_String(&info.description, g1002->grpi1002_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
&info);
case 1005:
g1005 = (struct GROUP_INFO_1005 *)r->in.buffer;
info.attributes.attributes = g1005->grpi1005_attributes;
- status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
&info);
werr = WERR_OK;
done:
- if (!cli) {
- return werr;
- }
-
if (is_valid_policy_hnd(&group_handle)) {
- rpccli_samr_Close(pipe_cli, ctx, &group_handle);
+ rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
}
if (ctx->disable_policy_handle_cache) {
WERROR NetGroupGetInfo_r(struct libnetapi_ctx *ctx,
struct NetGroupGetInfo *r)
{
- struct cli_state *cli = NULL;
struct rpc_pipe_client *pipe_cli = NULL;
NTSTATUS status;
WERROR werr;
- POLICY_HND connect_handle, domain_handle, group_handle;
+ struct policy_handle connect_handle, domain_handle, group_handle;
struct lsa_String lsa_group_name;
struct dom_sid2 *domain_sid = NULL;
werr = libnetapi_open_pipe(ctx, r->in.server_name,
&ndr_table_samr.syntax_id,
- &cli,
&pipe_cli);
if (!W_ERROR_IS_OK(werr)) {
goto done;
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
- SAMR_ACCESS_OPEN_DOMAIN,
+ SAMR_ACCESS_LOOKUP_DOMAIN,
SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
&connect_handle,
&domain_handle,
init_lsa_String(&lsa_group_name, r->in.group_name);
- status = rpccli_samr_LookupNames(pipe_cli, ctx,
+ status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
&domain_handle,
1,
&lsa_group_name,
goto done;
}
- status = rpccli_samr_OpenGroup(pipe_cli, ctx,
+ status = rpccli_samr_OpenGroup(pipe_cli, talloc_tos(),
&domain_handle,
SAMR_GROUP_ACCESS_LOOKUP_INFO,
rids.ids[0],
goto done;
}
- status = rpccli_samr_QueryGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_QueryGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFOALL2,
&info);
if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_INFO_CLASS)) {
- status = rpccli_samr_QueryGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_QueryGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFOALL,
&info);
goto done;
}
done:
- if (!cli) {
- return werr;
- }
-
if (is_valid_policy_hnd(&group_handle)) {
- rpccli_samr_Close(pipe_cli, ctx, &group_handle);
+ rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
}
if (ctx->disable_policy_handle_cache) {
WERROR NetGroupAddUser_r(struct libnetapi_ctx *ctx,
struct NetGroupAddUser *r)
{
- struct cli_state *cli = NULL;
struct rpc_pipe_client *pipe_cli = NULL;
NTSTATUS status;
WERROR werr;
- POLICY_HND connect_handle, domain_handle, group_handle;
+ struct policy_handle connect_handle, domain_handle, group_handle;
struct lsa_String lsa_group_name, lsa_user_name;
struct dom_sid2 *domain_sid = NULL;
werr = libnetapi_open_pipe(ctx, r->in.server_name,
&ndr_table_samr.syntax_id,
- &cli,
&pipe_cli);
if (!W_ERROR_IS_OK(werr)) {
goto done;
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
- SAMR_ACCESS_OPEN_DOMAIN,
+ SAMR_ACCESS_LOOKUP_DOMAIN,
SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
&connect_handle,
&domain_handle,
init_lsa_String(&lsa_group_name, r->in.group_name);
- status = rpccli_samr_LookupNames(pipe_cli, ctx,
+ status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
&domain_handle,
1,
&lsa_group_name,
&rids,
&types);
if (!NT_STATUS_IS_OK(status)) {
- werr = WERR_GROUP_NOT_FOUND;
+ werr = WERR_GROUPNOTFOUND;
goto done;
}
if (types.ids[0] != SID_NAME_DOM_GRP) {
- werr = WERR_GROUP_NOT_FOUND;
+ werr = WERR_GROUPNOTFOUND;
goto done;
}
- status = rpccli_samr_OpenGroup(pipe_cli, ctx,
+ status = rpccli_samr_OpenGroup(pipe_cli, talloc_tos(),
&domain_handle,
SAMR_GROUP_ACCESS_ADD_MEMBER,
rids.ids[0],
init_lsa_String(&lsa_user_name, r->in.user_name);
- status = rpccli_samr_LookupNames(pipe_cli, ctx,
+ status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
&domain_handle,
1,
&lsa_user_name,
goto done;
}
- status = rpccli_samr_AddGroupMember(pipe_cli, ctx,
+ status = rpccli_samr_AddGroupMember(pipe_cli, talloc_tos(),
&group_handle,
rids.ids[0],
7); /* why ? */
werr = WERR_OK;
done:
- if (!cli) {
- return werr;
- }
-
if (is_valid_policy_hnd(&group_handle)) {
- rpccli_samr_Close(pipe_cli, ctx, &group_handle);
+ rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
}
if (ctx->disable_policy_handle_cache) {
WERROR NetGroupDelUser_r(struct libnetapi_ctx *ctx,
struct NetGroupDelUser *r)
{
- struct cli_state *cli = NULL;
struct rpc_pipe_client *pipe_cli = NULL;
NTSTATUS status;
WERROR werr;
- POLICY_HND connect_handle, domain_handle, group_handle;
+ struct policy_handle connect_handle, domain_handle, group_handle;
struct lsa_String lsa_group_name, lsa_user_name;
struct dom_sid2 *domain_sid = NULL;
werr = libnetapi_open_pipe(ctx, r->in.server_name,
&ndr_table_samr.syntax_id,
- &cli,
&pipe_cli);
if (!W_ERROR_IS_OK(werr)) {
goto done;
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
- SAMR_ACCESS_OPEN_DOMAIN,
+ SAMR_ACCESS_LOOKUP_DOMAIN,
SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
&connect_handle,
&domain_handle,
init_lsa_String(&lsa_group_name, r->in.group_name);
- status = rpccli_samr_LookupNames(pipe_cli, ctx,
+ status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
&domain_handle,
1,
&lsa_group_name,
&rids,
&types);
if (!NT_STATUS_IS_OK(status)) {
- werr = WERR_GROUP_NOT_FOUND;
+ werr = WERR_GROUPNOTFOUND;
goto done;
}
if (types.ids[0] != SID_NAME_DOM_GRP) {
- werr = WERR_GROUP_NOT_FOUND;
+ werr = WERR_GROUPNOTFOUND;
goto done;
}
- status = rpccli_samr_OpenGroup(pipe_cli, ctx,
+ status = rpccli_samr_OpenGroup(pipe_cli, talloc_tos(),
&domain_handle,
SAMR_GROUP_ACCESS_REMOVE_MEMBER,
rids.ids[0],
init_lsa_String(&lsa_user_name, r->in.user_name);
- status = rpccli_samr_LookupNames(pipe_cli, ctx,
+ status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
&domain_handle,
1,
&lsa_user_name,
goto done;
}
- status = rpccli_samr_DeleteGroupMember(pipe_cli, ctx,
+ status = rpccli_samr_DeleteGroupMember(pipe_cli, talloc_tos(),
&group_handle,
rids.ids[0]);
if (!NT_STATUS_IS_OK(status)) {
werr = WERR_OK;
done:
- if (!cli) {
- return werr;
- }
-
if (is_valid_policy_hnd(&group_handle)) {
- rpccli_samr_Close(pipe_cli, ctx, &group_handle);
+ rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
}
if (ctx->disable_policy_handle_cache) {
WERROR NetGroupEnum_r(struct libnetapi_ctx *ctx,
struct NetGroupEnum *r)
{
- struct cli_state *cli = NULL;
struct rpc_pipe_client *pipe_cli = NULL;
struct policy_handle connect_handle;
struct dom_sid2 *domain_sid = NULL;
werr = libnetapi_open_pipe(ctx, r->in.server_name,
&ndr_table_samr.syntax_id,
- &cli,
&pipe_cli);
if (!W_ERROR_IS_OK(werr)) {
goto done;
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
- SAMR_ACCESS_OPEN_DOMAIN,
+ SAMR_ACCESS_LOOKUP_DOMAIN,
SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 |
SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS |
SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
goto done;
}
- status = rpccli_samr_QueryDomainInfo(pipe_cli, ctx,
+ status = rpccli_samr_QueryDomainInfo(pipe_cli, talloc_tos(),
&domain_handle,
2,
&domain_info);
goto done;
}
- if (r->out.resume_handle) {
+ if (r->out.resume_handle && info.info3.count > 0) {
*r->out.resume_handle =
info.info3.entries[info.info3.count-1].idx;
}
}
done:
- if (!cli) {
- return werr;
- }
-
/* if last query */
if (NT_STATUS_IS_OK(status) ||
NT_STATUS_IS_ERR(status)) {
{
/* FIXME: this call needs to cope with large replies */
- struct cli_state *cli = NULL;
struct rpc_pipe_client *pipe_cli = NULL;
struct policy_handle connect_handle, domain_handle, group_handle;
struct lsa_String lsa_account_name;
*r->out.buffer = NULL;
*r->out.entries_read = 0;
+ *r->out.total_entries = 0;
switch (r->in.level) {
case 0:
werr = libnetapi_open_pipe(ctx, r->in.server_name,
&ndr_table_samr.syntax_id,
- &cli,
&pipe_cli);
if (!W_ERROR_IS_OK(werr)) {
goto done;
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
- SAMR_ACCESS_OPEN_DOMAIN,
+ SAMR_ACCESS_LOOKUP_DOMAIN,
SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
&connect_handle,
&domain_handle,
init_lsa_String(&lsa_account_name, r->in.group_name);
- status = rpccli_samr_LookupNames(pipe_cli, ctx,
+ status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
&domain_handle,
1,
&lsa_account_name,
goto done;
}
- status = rpccli_samr_OpenGroup(pipe_cli, ctx,
+ status = rpccli_samr_OpenGroup(pipe_cli, talloc_tos(),
&domain_handle,
SAMR_GROUP_ACCESS_GET_MEMBERS,
group_rids.ids[0],
goto done;
}
- status = rpccli_samr_QueryGroupMember(pipe_cli, ctx,
+ status = rpccli_samr_QueryGroupMember(pipe_cli, talloc_tos(),
&group_handle,
&rid_array);
if (!NT_STATUS_IS_OK(status)) {
goto done;
}
- status = rpccli_samr_LookupRids(pipe_cli, ctx,
+ status = rpccli_samr_LookupRids(pipe_cli, talloc_tos(),
&domain_handle,
rid_array->count,
rid_array->rids,
}
}
- if (r->out.entries_read) {
- *r->out.entries_read = entries_read;
- }
-
- if (r->out.total_entries) {
- *r->out.total_entries = entries_read;
- }
+ *r->out.entries_read = entries_read;
+ *r->out.total_entries = entries_read;
werr = WERR_OK;
done:
- if (!cli) {
- return werr;
- }
-
if (is_valid_policy_hnd(&group_handle)) {
- rpccli_samr_Close(pipe_cli, ctx, &group_handle);
+ rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
}
if (ctx->disable_policy_handle_cache) {
WERROR NetGroupSetUsers_r(struct libnetapi_ctx *ctx,
struct NetGroupSetUsers *r)
{
- struct cli_state *cli = NULL;
struct rpc_pipe_client *pipe_cli = NULL;
struct policy_handle connect_handle, domain_handle, group_handle;
struct lsa_String lsa_account_name;
werr = libnetapi_open_pipe(ctx, r->in.server_name,
&ndr_table_samr.syntax_id,
- &cli,
&pipe_cli);
if (!W_ERROR_IS_OK(werr)) {
goto done;
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
- SAMR_ACCESS_OPEN_DOMAIN,
+ SAMR_ACCESS_LOOKUP_DOMAIN,
SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
&connect_handle,
&domain_handle,
init_lsa_String(&lsa_account_name, r->in.group_name);
- status = rpccli_samr_LookupNames(pipe_cli, ctx,
+ status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
&domain_handle,
1,
&lsa_account_name,
goto done;
}
- status = rpccli_samr_OpenGroup(pipe_cli, ctx,
+ status = rpccli_samr_OpenGroup(pipe_cli, talloc_tos(),
&domain_handle,
SAMR_GROUP_ACCESS_GET_MEMBERS |
SAMR_GROUP_ACCESS_ADD_MEMBER |
goto done;
}
- status = rpccli_samr_QueryGroupInfo(pipe_cli, ctx,
+ status = rpccli_samr_QueryGroupInfo(pipe_cli, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
&group_info);
}
}
- status = rpccli_samr_LookupNames(pipe_cli, ctx,
+ status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
&domain_handle,
r->in.num_entries,
lsa_names,
member_rids = user_rids.ids;
num_member_rids = user_rids.count;
- status = rpccli_samr_QueryGroupMember(pipe_cli, ctx,
+ status = rpccli_samr_QueryGroupMember(pipe_cli, talloc_tos(),
&group_handle,
&rid_array);
if (!NT_STATUS_IS_OK(status)) {
/* add list */
for (i=0; i < num_add_rids; i++) {
- status = rpccli_samr_AddGroupMember(pipe_cli, ctx,
+ status = rpccli_samr_AddGroupMember(pipe_cli, talloc_tos(),
&group_handle,
add_rids[i],
7 /* ? */);
/* del list */
for (i=0; i < num_del_rids; i++) {
- status = rpccli_samr_DeleteGroupMember(pipe_cli, ctx,
+ status = rpccli_samr_DeleteGroupMember(pipe_cli, talloc_tos(),
&group_handle,
del_rids[i]);
if (!NT_STATUS_IS_OK(status)) {
werr = WERR_OK;
done:
- if (!cli) {
- return werr;
- }
-
if (is_valid_policy_hnd(&group_handle)) {
- rpccli_samr_Close(pipe_cli, ctx, &group_handle);
+ rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
}
if (ctx->disable_policy_handle_cache) {