svn commit: samba r23018 - in branches/SAMBA_4_0/source/smb_server/smb: .

tridge at samba.org tridge at samba.org
Sun May 20 08:43:04 GMT 2007


Author: tridge
Date: 2007-05-20 08:43:03 +0000 (Sun, 20 May 2007)
New Revision: 23018

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23018

Log:

fixed a memory leak in our server side session setup code for failed
session setups

Modified:
   branches/SAMBA_4_0/source/smb_server/smb/sesssetup.c


Changeset:
Modified: branches/SAMBA_4_0/source/smb_server/smb/sesssetup.c
===================================================================
--- branches/SAMBA_4_0/source/smb_server/smb/sesssetup.c	2007-05-20 08:01:02 UTC (rev 23017)
+++ branches/SAMBA_4_0/source/smb_server/smb/sesssetup.c	2007-05-20 08:43:03 UTC (rev 23018)
@@ -60,7 +60,7 @@
 	union smb_sesssetup *sess = talloc_get_type(req->io_ptr, union smb_sesssetup);
 	struct auth_serversupplied_info *server_info = NULL;
 	struct auth_session_info *session_info;
-	struct smbsrv_session *smb_sess;
+	struct smbsrv_session *smb_sess = NULL;
 	NTSTATUS status;
 
 	status = auth_check_password_recv(areq, req, &server_info);
@@ -88,6 +88,10 @@
 	sess->old.out.vuid = smb_sess->vuid;
 
 failed:
+	if (!NT_STATUS_IS_OK(status)) {
+		talloc_free(smb_sess);
+		req->session = NULL;
+	}
 	status = auth_nt_status_squash(status);
 	smbsrv_sesssetup_backend_send(req, sess, status);
 }
@@ -155,7 +159,7 @@
 	union smb_sesssetup *sess = talloc_get_type(req->io_ptr, union smb_sesssetup);
 	struct auth_serversupplied_info *server_info = NULL;
 	struct auth_session_info *session_info;
-	struct smbsrv_session *smb_sess;
+	struct smbsrv_session *smb_sess = NULL;
 	NTSTATUS status;
 
 	status = auth_check_password_recv(areq, req, &server_info);
@@ -204,6 +208,10 @@
 done:
 	status = NT_STATUS_OK;
 failed:
+	if (!NT_STATUS_IS_OK(status)) {
+		talloc_free(smb_sess);
+		req->session = NULL;
+	}
 	status = auth_nt_status_squash(status);
 	smbsrv_sesssetup_backend_send(req, sess, status);
 }
@@ -337,6 +345,10 @@
 done:
 	sess->spnego.out.vuid = smb_sess->vuid;
 failed:
+	if (!NT_STATUS_IS_OK(status)) {
+		talloc_free(smb_sess);
+		req->session = NULL;
+	}
 	status = auth_nt_status_squash(status);
 	smbsrv_sesssetup_backend_send(req, sess, status);
 }



More information about the samba-cvs mailing list