From fe43a56788e537d0cea99a368cf63b3e03ff379a Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Fri, 13 Jun 2008 21:25:53 +0200 Subject: net_vampire: add samsync_init_context(). Guenther (This used to be commit 63ca4414b62657983c27d2930483aa56f9c78ccf) --- source3/utils/net_rpc_samsync.c | 50 +++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 9 deletions(-) (limited to 'source3') diff --git a/source3/utils/net_rpc_samsync.c b/source3/utils/net_rpc_samsync.c index 61c60b2d04..0d289ed605 100644 --- a/source3/utils/net_rpc_samsync.c +++ b/source3/utils/net_rpc_samsync.c @@ -343,6 +343,26 @@ static NTSTATUS display_sam_entries(TALLOC_CTX *mem_ctx, return NT_STATUS_OK; } +static NTSTATUS samsync_init_context(TALLOC_CTX *mem_ctx, + const struct dom_sid *domain_sid, + enum net_samsync_mode mode, + struct samsync_context **ctx_p) +{ + struct samsync_context *ctx; + + *ctx_p = NULL; + + ctx = TALLOC_ZERO_P(mem_ctx, struct samsync_context); + NT_STATUS_HAVE_NO_MEMORY(ctx); + + ctx->mode = mode; + ctx->domain_sid = domain_sid; + + *ctx_p = ctx; + + return NT_STATUS_OK; +} + const char *samsync_debug_str(TALLOC_CTX *mem_ctx, enum net_samsync_mode mode, enum netr_SamDatabaseID database_id) @@ -487,13 +507,16 @@ NTSTATUS rpc_samdump_internals(struct net_context *c, int argc, const char **argv) { - struct samsync_context *ctx; - - ctx = TALLOC_ZERO_P(mem_ctx, struct samsync_context); - NT_STATUS_HAVE_NO_MEMORY(ctx); + struct samsync_context *ctx = NULL; + NTSTATUS status; - ctx->mode = NET_SAMSYNC_MODE_DUMP; - ctx->domain_sid = domain_sid; + status = samsync_init_context(mem_ctx, + domain_sid, + NET_SAMSYNC_MODE_DUMP, + &ctx); + if (!NT_STATUS_IS_OK(status)) { + return status; + } process_database(pipe_hnd, SAM_DATABASE_DOMAIN, display_sam_entries, ctx); @@ -504,6 +527,8 @@ NTSTATUS rpc_samdump_internals(struct net_context *c, process_database(pipe_hnd, SAM_DATABASE_PRIVS, display_sam_entries, ctx); + TALLOC_FREE(ctx); + return NT_STATUS_OK; } @@ -2451,11 +2476,16 @@ NTSTATUS rpc_vampire_internals(struct net_context *c, NTSTATUS result; fstring my_dom_sid_str; fstring rem_dom_sid_str; - struct samsync_context *ctx; + struct samsync_context *ctx = NULL; samsync_fn_t *fn; - ctx = TALLOC_ZERO_P(mem_ctx, struct samsync_context); - NT_STATUS_HAVE_NO_MEMORY(ctx); + result = samsync_init_context(mem_ctx, + domain_sid, + 0, + &ctx); + if (!NT_STATUS_IS_OK(result)) { + return result; + } if (!sid_equal(domain_sid, get_global_sam_sid())) { d_printf("Cannot import users from %s at this time, " @@ -2508,6 +2538,8 @@ NTSTATUS rpc_vampire_internals(struct net_context *c, /* Currently we crash on PRIVS somewhere in unmarshalling */ /* Dump_database(cli, SAM_DATABASE_PRIVS, &ret_creds); */ + TALLOC_FREE(ctx); + fail: return result; } -- cgit