From f37793ef0aa31eec9a6e619b55fa07c3025fcac6 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 18 Aug 2010 10:00:40 +1000 Subject: s4:ldap_server use talloc_unlink() to avoid talloc_free() with references Both the session_info and the ldb can have references. Andrew Bartlett --- source4/ldap_server/ldap_bind.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source4/ldap_server') diff --git a/source4/ldap_server/ldap_bind.c b/source4/ldap_server/ldap_bind.c index 1b235f2a1b..c97211cb2c 100644 --- a/source4/ldap_server/ldap_bind.c +++ b/source4/ldap_server/ldap_bind.c @@ -63,12 +63,12 @@ static NTSTATUS ldapsrv_BindSimple(struct ldapsrv_call *call) result = LDAP_SUCCESS; errstr = NULL; - talloc_free(call->conn->session_info); + talloc_unlink(call->conn, call->conn->session_info); call->conn->session_info = session_info; talloc_steal(call->conn, session_info); /* don't leak the old LDB */ - talloc_free(call->conn->ldb); + talloc_unlink(call->conn, call->conn->ldb); status = ldapsrv_backend_Init(call->conn); @@ -234,11 +234,11 @@ static NTSTATUS ldapsrv_BindSASL(struct ldapsrv_call *call) "SASL:[%s]: Failed to get session info: %s", req->creds.SASL.mechanism, nt_errstr(status)); } else { - talloc_free(old_session_info); + talloc_unlink(conn, old_session_info); talloc_steal(conn, conn->session_info); /* don't leak the old LDB */ - talloc_free(conn->ldb); + talloc_unlink(conn, conn->ldb); status = ldapsrv_backend_Init(conn); -- cgit