[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Thu Jan 26 17:27:03 MST 2012


The branch, master has been updated
       via  17a77ea Fix a really slow memory leak (in master at least). Found by Ira Cooper <ira at wakeful.net>.
      from  633a28b s3:auth/auth_generic: for now call sub_set_smb_name() and lp_load()

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 17a77ea9b484a7040098fc66cf78625df4c14c65
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Jan 26 14:53:43 2012 -0800

    Fix a really slow memory leak (in master at least). Found by Ira Cooper <ira at wakeful.net>.
    
    Bug #8724 - Memory leak in parent smbd on connection.
    
    Autobuild-User: Jeremy Allison <jra at samba.org>
    Autobuild-Date: Fri Jan 27 01:26:28 CET 2012 on sn-devel-104

-----------------------------------------------------------------------

Summary of changes:
 source3/lib/substitute.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c
index eae6d15..5427ed8 100644
--- a/source3/lib/substitute.c
+++ b/source3/lib/substitute.c
@@ -195,7 +195,7 @@ void sub_set_smb_name(const char *name)
 }
 
 static char sub_peeraddr[INET6_ADDRSTRLEN];
-static const char *sub_peername = "";
+static const char *sub_peername = NULL;
 static char sub_sockaddr[INET6_ADDRSTRLEN];
 
 void sub_set_socket_ids(const char *peeraddr, const char *peername,
@@ -208,6 +208,11 @@ void sub_set_socket_ids(const char *peeraddr, const char *peername,
 	}
 	strlcpy(sub_peeraddr, addr, sizeof(sub_peeraddr));
 
+	if (sub_peername != NULL &&
+			sub_peername != sub_peeraddr) {
+		free(discard_const_p(char,sub_peername));
+		sub_peername = NULL;
+	}
 	sub_peername = SMB_STRDUP(peername);
 	if (sub_peername == NULL) {
 		sub_peername = sub_peeraddr;
@@ -547,7 +552,7 @@ static char *alloc_sub_basic(const char *smb_name, const char *domain_name,
 			break;
 		case 'M' :
 			a_string = realloc_string_sub(a_string, "%M",
-						      sub_peername);
+						      sub_peername ? sub_peername : "");
 			break;
 		case 'R' :
 			a_string = realloc_string_sub(a_string, "%R", remote_proto);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list