diff options
author | Andrew Bartlett <abartlet@samba.org> | 2010-08-18 10:00:40 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2010-08-18 10:08:43 +1000 |
commit | f37793ef0aa31eec9a6e619b55fa07c3025fcac6 (patch) | |
tree | 5c0d43355d0097616006175e619cb547f6d96ccc | |
parent | 23dc2e4244a99f1e955d54c22516a7a8c108d989 (diff) | |
download | samba-f37793ef0aa31eec9a6e619b55fa07c3025fcac6.tar.gz samba-f37793ef0aa31eec9a6e619b55fa07c3025fcac6.tar.bz2 samba-f37793ef0aa31eec9a6e619b55fa07c3025fcac6.zip |
s4:ldap_server use talloc_unlink() to avoid talloc_free() with references
Both the session_info and the ldb can have references.
Andrew Bartlett
-rw-r--r-- | source4/ldap_server/ldap_bind.c | 8 |
1 files changed, 4 insertions, 4 deletions
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); |