diff options
author | Andrew Bartlett <abartlet@samba.org> | 2011-01-17 16:20:09 +1100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2011-01-18 10:55:05 +0100 |
commit | 9b643c8c83bda42b5f8ad1d9ca0419e1e1c0e372 (patch) | |
tree | e9e01697d49793564d67305cc539e3b115079904 /source4/auth/samba_server_gensec.c | |
parent | d5173ca189a080d0bb3a56200203c32a40c4b6e3 (diff) | |
download | samba-9b643c8c83bda42b5f8ad1d9ca0419e1e1c0e372.tar.gz samba-9b643c8c83bda42b5f8ad1d9ca0419e1e1c0e372.tar.bz2 samba-9b643c8c83bda42b5f8ad1d9ca0419e1e1c0e372.zip |
s4-gensec Don't steal the auth_context, reference it.
We don't want to steal this pointer away from the caller if it's been
set up from python.
Andrew Bartlett
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; } |