diff options
Diffstat (limited to 'source4/auth/samba_server_gensec.c')
-rw-r--r-- | source4/auth/samba_server_gensec.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/source4/auth/samba_server_gensec.c b/source4/auth/samba_server_gensec.c index 6d27a362e4..07b9b15e17 100644 --- a/source4/auth/samba_server_gensec.c +++ b/source4/auth/samba_server_gensec.c @@ -38,8 +38,13 @@ NTSTATUS samba_server_gensec_start(TALLOC_CTX *mem_ctx, NTSTATUS nt_status; struct gensec_security *gensec_ctx; struct auth_context *auth_context; + + TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx); + if (!tmp_ctx) { + return NT_STATUS_NO_MEMORY; + } - nt_status = auth_context_create(mem_ctx, + nt_status = auth_context_create(tmp_ctx, event_ctx, msg_ctx, lp_ctx, @@ -47,16 +52,17 @@ NTSTATUS samba_server_gensec_start(TALLOC_CTX *mem_ctx, if (!NT_STATUS_IS_OK(nt_status)) { DEBUG(1, ("Failed to start auth server code: %s\n", nt_errstr(nt_status))); + talloc_free(tmp_ctx); return nt_status; } - nt_status = gensec_server_start(mem_ctx, + nt_status = gensec_server_start(tmp_ctx, event_ctx, lpcfg_gensec_settings(mem_ctx, lp_ctx), auth_context, &gensec_ctx); if (!NT_STATUS_IS_OK(nt_status)) { - talloc_free(auth_context); + talloc_free(tmp_ctx); DEBUG(1, ("Failed to start GENSEC server code: %s\n", nt_errstr(nt_status))); return nt_status; } @@ -66,6 +72,7 @@ NTSTATUS samba_server_gensec_start(TALLOC_CTX *mem_ctx, if (target_service) { gensec_set_target_service(gensec_ctx, target_service); } - *gensec_context = gensec_ctx; + *gensec_context = talloc_steal(mem_ctx, gensec_ctx); + talloc_free(tmp_ctx); return nt_status; } |