]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
fixed another ambiguous talloc call
authorAndrew Tridgell <tridge@samba.org>
Fri, 7 Aug 2009 07:23:52 +0000 (17:23 +1000)
committerAndrew Tridgell <tridge@samba.org>
Fri, 7 Aug 2009 07:24:48 +0000 (17:24 +1000)
During the creation of the 3 RPC pipes in winbind we try to steal the
RPC binding structure to be a child of the pipe once the pipe is
established. This fails with a talloc warning as the rpc connection
code already holds a reference to the binding.

The fix is to use talloc_reparent() instead.

source4/winbind/wb_init_domain.c

index 676746681ff7a4cc3a9f2ef58d80fd13899fa17e..1f560c17ce391ba268b3270e681d09df7dd0fc6a 100644 (file)
@@ -211,7 +211,7 @@ static void init_domain_recv_netlogonpipe(struct composite_context *ctx)
        if (!composite_is_ok(state->ctx)) {
                return;
        }
-       talloc_steal(state->domain->netlogon_pipe, state->domain->netlogon_binding);
+       talloc_reparent(state, state->domain->netlogon_pipe, state->domain->netlogon_binding);
 
        state->domain->lsa_binding = init_domain_binding(state, &ndr_table_lsarpc);
 
@@ -286,7 +286,7 @@ static void init_domain_recv_lsa_pipe(struct composite_context *ctx)
        if (!composite_is_ok(state->ctx)) return;
 
        talloc_steal(state->domain->libnet_ctx, state->domain->libnet_ctx->lsa.pipe);
-       talloc_steal(state->domain->libnet_ctx->lsa.pipe, state->domain->lsa_binding);
+       talloc_reparent(state, state->domain->libnet_ctx->lsa.pipe, state->domain->lsa_binding);
        state->domain->libnet_ctx->lsa.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
        state->domain->libnet_ctx->lsa.name = state->domain->info->name;
 
@@ -399,7 +399,7 @@ static void init_domain_recv_samr(struct composite_context *ctx)
                &state->domain->libnet_ctx->samr.handle);
        if (!composite_is_ok(state->ctx)) return;
 
-       talloc_steal(state->domain->libnet_ctx->samr.pipe, state->domain->samr_binding);
+       talloc_reparent(state, state->domain->libnet_ctx->samr.pipe, state->domain->samr_binding);
        state->domain->libnet_ctx->samr.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
        state->domain->libnet_ctx->samr.name = state->domain->info->name;
        state->domain->libnet_ctx->samr.sid = dom_sid_dup(