]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
net_vampire: add samsync_init_context().
authorGünther Deschner <gd@samba.org>
Fri, 13 Jun 2008 19:25:53 +0000 (21:25 +0200)
committerGünther Deschner <gd@samba.org>
Fri, 13 Jun 2008 21:39:09 +0000 (23:39 +0200)
Guenther

source/utils/net_rpc_samsync.c

index 61c60b2d04561eb3b429ad8264bb0dc917e7d418..0d289ed6054be9a33c4e1866538bc1253905576f 100644 (file)
@@ -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;
 }