r10832: free the old session info
authorStefan Metzmacher <metze@samba.org>
Sat, 8 Oct 2005 09:55:38 +0000 (09:55 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:39:33 +0000 (13:39 -0500)
metze
(This used to be commit 16b2569788348ee3654557cf714ea3b204375c3c)

source4/ldap_server/ldap_bind.c

index 9c9cca362bac5ee9bd482312e2789ec04a4c0a79..e9d38ad93b0d023785f95332d087b66250aab0a4 100644 (file)
@@ -105,6 +105,7 @@ reply:
                errstr = NULL;
        } else if (NT_STATUS_IS_OK(status)) {
                struct ldapsrv_partition *part;
+               struct auth_session_info *old_session_info;
 
                result = LDAP_SUCCESS;
                errstr = NULL;
@@ -112,11 +113,15 @@ reply:
                    gensec_have_feature(call->conn->gensec, GENSEC_FEATURE_SIGN)) {
                        call->conn->enable_wrap = True;
                }
+               old_session_info = call->conn->session_info;
+               call->conn->session_info = NULL;
                status = gensec_session_info(call->conn->gensec, &call->conn->session_info);
                if (!NT_STATUS_IS_OK(status)) {
+                       call->conn->session_info = old_session_info;
                        result = LDAP_OPERATIONS_ERROR;
                        errstr = talloc_asprintf(reply, "SASL:[%s]: Failed to get session info: %s", req->creds.SASL.mechanism, nt_errstr(status));
                } else {
+                       talloc_free(old_session_info);
                        for (part = call->conn->partitions; part; part = part->next) {
                                if (!part->ops->Bind) {
                                        continue;