summaryrefslogtreecommitdiff
path: root/source4/ldap_server
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2017-05-12 12:38:59 +0200
committerAndrew Bartlett <abartlet@samba.org>2017-06-15 09:13:24 +0200
commit772b816c4488db36f48de98a88c3962aadc0f7ca (patch)
tree20c5fcb81d0830c15f5b1ec00d09d59266e8b810 /source4/ldap_server
parent489bc70c43e366d1a82485ce20360eebd45f1b10 (diff)
downloadsamba-772b816c4488db36f48de98a88c3962aadc0f7ca.tar.gz
s4:ldap_server: avoid using talloc_reference()
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/ldap_server')
-rw-r--r--source4/ldap_server/ldap_bind.c14
1 files changed, 9 insertions, 5 deletions
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;