From: Stefan Metzmacher Date: Fri, 12 May 2017 10:38:59 +0000 (+0200) Subject: s4:ldap_server: avoid using talloc_reference() X-Git-Tag: ldb-1.1.31~34 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=772b816c4488db36f48de98a88c3962aadc0f7ca;p=thirdparty%2Fsamba.git s4:ldap_server: avoid using talloc_reference() Signed-off-by: Stefan Metzmacher Reviewed-by: Andrew Bartlett --- diff --git a/source4/ldap_server/ldap_bind.c b/source4/ldap_server/ldap_bind.c index 3ba7ea39111..71376429756 100644 --- a/source4/ldap_server/ldap_bind.c +++ b/source4/ldap_server/ldap_bind.c @@ -506,10 +506,6 @@ static NTSTATUS ldapsrv_BindSASL(struct ldapsrv_call *call) req->creds.SASL.mechanism, nt_errstr(status)); goto do_reply; } - - if (!talloc_reference(context->sasl, conn->gensec)) { - return NT_STATUS_NO_MEMORY; - } } status = gensec_session_info(conn->gensec, call, &session_info); @@ -541,11 +537,19 @@ static NTSTATUS ldapsrv_BindSASL(struct ldapsrv_call *call) } if (context != NULL) { + const void *ptr = NULL; + + ptr = talloc_reparent(conn, context->sasl, conn->gensec); + if (ptr == NULL) { + return NT_STATUS_NO_MEMORY; + } + call->postprocess_send = ldapsrv_sasl_postprocess_send; call->postprocess_recv = ldapsrv_sasl_postprocess_recv; call->postprocess_private = context; + } else { + talloc_unlink(conn, conn->gensec); } - talloc_unlink(conn, conn->gensec); conn->gensec = NULL; *resp->SASL.secblob = output;