From 13756d0e803c228f7ff75ba996acd6afd1df0dcb Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 2 Oct 2010 11:50:26 +0200 Subject: s3: Attempt to fix bug 7665 Quite a few of our internal routines put stuff on talloc_tos() these days. In top-level netapi routines, properly allocate a stackframe and clean it again. Also, don't leak memory in the rpccli_ callers onto the libnetapi context. --- source3/lib/netapi/localgroup.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'source3/lib/netapi/localgroup.c') diff --git a/source3/lib/netapi/localgroup.c b/source3/lib/netapi/localgroup.c index c9e1b722bd..676f6df9ed 100644 --- a/source3/lib/netapi/localgroup.c +++ b/source3/lib/netapi/localgroup.c @@ -199,7 +199,7 @@ WERROR NetLocalGroupAdd_r(struct libnetapi_ctx *ctx, init_lsa_String(&lsa_account_name, alias_name); - status = rpccli_samr_CreateDomAlias(pipe_cli, ctx, + status = rpccli_samr_CreateDomAlias(pipe_cli, talloc_tos(), &domain_handle, &lsa_account_name, SEC_STD_DELETE | @@ -217,7 +217,7 @@ WERROR NetLocalGroupAdd_r(struct libnetapi_ctx *ctx, init_lsa_String(&alias_info.description, info1->lgrpi1_comment); - status = rpccli_samr_SetAliasInfo(pipe_cli, ctx, + status = rpccli_samr_SetAliasInfo(pipe_cli, talloc_tos(), &alias_handle, ALIASINFODESCRIPTION, &alias_info); @@ -231,7 +231,7 @@ WERROR NetLocalGroupAdd_r(struct libnetapi_ctx *ctx, done: if (is_valid_policy_hnd(&alias_handle)) { - rpccli_samr_Close(pipe_cli, ctx, &alias_handle); + rpccli_samr_Close(pipe_cli, talloc_tos(), &alias_handle); } if (ctx->disable_policy_handle_cache) { @@ -334,7 +334,7 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx, delete_alias: - status = rpccli_samr_DeleteDomAlias(pipe_cli, ctx, + status = rpccli_samr_DeleteDomAlias(pipe_cli, talloc_tos(), &alias_handle); if (!NT_STATUS_IS_OK(status)) { werr = ntstatus_to_werror(status); @@ -347,7 +347,7 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx, done: if (is_valid_policy_hnd(&alias_handle)) { - rpccli_samr_Close(pipe_cli, ctx, &alias_handle); + rpccli_samr_Close(pipe_cli, talloc_tos(), &alias_handle); } if (ctx->disable_policy_handle_cache) { @@ -505,7 +505,7 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx, } query_alias: - status = rpccli_samr_QueryAliasInfo(pipe_cli, ctx, + status = rpccli_samr_QueryAliasInfo(pipe_cli, talloc_tos(), &alias_handle, ALIASINFOALL, &alias_info); @@ -522,7 +522,7 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx, done: if (is_valid_policy_hnd(&alias_handle)) { - rpccli_samr_Close(pipe_cli, ctx, &alias_handle); + rpccli_samr_Close(pipe_cli, talloc_tos(), &alias_handle); } if (ctx->disable_policy_handle_cache) { @@ -683,7 +683,7 @@ WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx, goto done; } - status = rpccli_samr_SetAliasInfo(pipe_cli, ctx, + status = rpccli_samr_SetAliasInfo(pipe_cli, talloc_tos(), &alias_handle, alias_level, alias_info); @@ -696,7 +696,7 @@ WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx, done: if (is_valid_policy_hnd(&alias_handle)) { - rpccli_samr_Close(pipe_cli, ctx, &alias_handle); + rpccli_samr_Close(pipe_cli, talloc_tos(), &alias_handle); } if (ctx->disable_policy_handle_cache) { @@ -791,7 +791,7 @@ WERROR NetLocalGroupEnum_r(struct libnetapi_ctx *ctx, goto done; } - status = rpccli_samr_QueryDomainInfo(pipe_cli, ctx, + status = rpccli_samr_QueryDomainInfo(pipe_cli, talloc_tos(), &builtin_handle, 2, &builtin_info); @@ -804,7 +804,7 @@ WERROR NetLocalGroupEnum_r(struct libnetapi_ctx *ctx, *r->out.total_entries += builtin_info->general.num_aliases; } - status = rpccli_samr_QueryDomainInfo(pipe_cli, ctx, + status = rpccli_samr_QueryDomainInfo(pipe_cli, talloc_tos(), &domain_handle, 2, &domain_info); @@ -817,7 +817,7 @@ WERROR NetLocalGroupEnum_r(struct libnetapi_ctx *ctx, *r->out.total_entries += domain_info->general.num_aliases; } - status = rpccli_samr_EnumDomainAliases(pipe_cli, ctx, + status = rpccli_samr_EnumDomainAliases(pipe_cli, talloc_tos(), &builtin_handle, r->in.resume_handle, &builtin_sam_array, @@ -853,7 +853,7 @@ WERROR NetLocalGroupEnum_r(struct libnetapi_ctx *ctx, r->out.buffer); } - status = rpccli_samr_EnumDomainAliases(pipe_cli, ctx, + status = rpccli_samr_EnumDomainAliases(pipe_cli, talloc_tos(), &domain_handle, r->in.resume_handle, &domain_sam_array, @@ -1159,7 +1159,7 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx, struct lsa_SidArray current_sids; - status = rpccli_samr_GetMembersInAlias(pipe_cli, ctx, + status = rpccli_samr_GetMembersInAlias(pipe_cli, talloc_tos(), &alias_handle, ¤t_sids); if (!NT_STATUS_IS_OK(status)) { @@ -1215,7 +1215,7 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx, /* add list */ for (i=0; i < num_add_sids; i++) { - status = rpccli_samr_AddAliasMember(pipe_cli, ctx, + status = rpccli_samr_AddAliasMember(pipe_cli, talloc_tos(), &alias_handle, &add_sids[i]); if (!NT_STATUS_IS_OK(status)) { @@ -1227,7 +1227,7 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx, /* del list */ for (i=0; i < num_del_sids; i++) { - status = rpccli_samr_DeleteAliasMember(pipe_cli, ctx, + status = rpccli_samr_DeleteAliasMember(pipe_cli, talloc_tos(), &alias_handle, &del_sids[i]); if (!NT_STATUS_IS_OK(status)) { @@ -1240,7 +1240,7 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx, done: if (is_valid_policy_hnd(&alias_handle)) { - rpccli_samr_Close(pipe_cli, ctx, &alias_handle); + rpccli_samr_Close(pipe_cli, talloc_tos(), &alias_handle); } if (ctx->disable_policy_handle_cache) { -- cgit