r18104: A couple of important fixes to samr domain open so that
authorRafal Szczesniak <mimir@samba.org>
Tue, 5 Sep 2006 18:45:03 +0000 (18:45 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:17:17 +0000 (14:17 -0500)
the corresponding test may pass.

rafal

source/libnet/libnet_domain.c

index 806d9d0fd1019b94e1b9a3a1731df6cc743312f5..57c0ce6571e4c62a611b949b431128c4fc80690a 100644 (file)
@@ -267,7 +267,7 @@ struct composite_context *libnet_DomainOpenSamr_send(struct libnet_context *ctx,
        s->ctx                 = ctx;
        s->pipe                = ctx->samr.pipe;
        s->access_mask         = io->in.access_mask;
-       s->domain_name.string  = io->in.domain_name;
+       s->domain_name.string  = talloc_strdup(c, io->in.domain_name);
 
        /* check, if there's samr pipe opened already, before opening a domain */
        if (ctx->samr.pipe == NULL) {
@@ -360,7 +360,7 @@ NTSTATUS libnet_DomainOpenSamr_recv(struct composite_context *c, struct libnet_c
                /* store the resulting handle and related data for use by other
                   libnet functions */
                ctx->samr.handle      = s->domain_handle;
-               ctx->samr.name        = talloc_strdup(ctx, s->domain_name.string);
+               ctx->samr.name        = talloc_steal(ctx, s->domain_name.string);
                ctx->samr.access_mask = s->access_mask;
        }
 
@@ -739,6 +739,7 @@ NTSTATUS libnet_DomainCloseLsa_recv(struct composite_context *c, struct libnet_c
 
 struct domain_close_samr_state {
        struct samr_Close close;
+       struct policy_handle handle;
        
        void (*monitor_fn)(struct monitor_msg*);
 };
@@ -773,7 +774,9 @@ struct composite_context* libnet_DomainCloseSamr_send(struct libnet_context *ctx
        }
 
        /* prepare close domain handle call arguments */
-       s->close.in.handle = &ctx->samr.handle;
+       ZERO_STRUCT(s->close);
+       s->close.in.handle  = &ctx->samr.handle;
+       s->close.out.handle = &s->handle;
 
        /* send the request */
        close_req = dcerpc_samr_Close_send(ctx->samr.pipe, ctx, &s->close);