[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Thu Oct 15 17:56:57 MDT 2009


The branch, master has been updated
       via  5cc8959... Fix valgrind memory leak in bug #6814 - Fixes for problems reported by valgrind Jeremy.
      from  a6e4cb5... s3: fixed krb5 build problem on ubuntu karmic

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


- Log -----------------------------------------------------------------
commit 5cc895983d9d9e9a0acfaa6a3dfa97f14d9d94c6
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Oct 15 16:55:40 2009 -0700

    Fix valgrind memory leak in bug #6814 - Fixes for problems reported by valgrind
    Jeremy.

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

Summary of changes:
 source3/lib/smbldap.c         |    8 +++++++-
 source3/passdb/secrets.c      |    1 +
 source3/winbindd/idmap_ldap.c |    1 +
 3 files changed, 9 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/smbldap.c b/source3/lib/smbldap.c
index 47b2208..7287e3d 100644
--- a/source3/lib/smbldap.c
+++ b/source3/lib/smbldap.c
@@ -1054,12 +1054,18 @@ static int smbldap_connect_system(struct smbldap_state *ldap_state, LDAP * ldap_
 	int version;
 
 	if (!ldap_state->anonymous && !ldap_state->bind_dn) {
+		char *bind_dn = NULL;
+		char *bind_secret = NULL;
 
 		/* get the default dn and password only if they are not set already */
-		if (!fetch_ldap_pw(&ldap_state->bind_dn, &ldap_state->bind_secret)) {
+		if (!fetch_ldap_pw(&bind_dn, &bind_secret)) {
 			DEBUG(0, ("ldap_connect_system: Failed to retrieve password from secrets.tdb\n"));
 			return LDAP_INVALID_CREDENTIALS;
 		}
+		smbldap_set_creds(ldap_state, false, bind_dn, bind_secret);
+		SAFE_FREE(bind_dn);
+		memset(bind_secret, '\0', strlen(bind_secret));
+		SAFE_FREE(bind_secret);
 	}
 
 	/* removed the sasl_bind_s "EXTERNAL" stuff, as my testsuite 
diff --git a/source3/passdb/secrets.c b/source3/passdb/secrets.c
index 8b87c2c..29e0662 100644
--- a/source3/passdb/secrets.c
+++ b/source3/passdb/secrets.c
@@ -891,6 +891,7 @@ bool fetch_ldap_pw(char **dn, char** pw)
 	if (asprintf(&key, "%s/%s", SECRETS_LDAP_BIND_PW, *dn) < 0) {
 		SAFE_FREE(*dn);
 		DEBUG(0, ("fetch_ldap_pw: asprintf failed!\n"));
+		return false;
 	}
 
 	*pw=(char *)secrets_fetch(key, &size);
diff --git a/source3/winbindd/idmap_ldap.c b/source3/winbindd/idmap_ldap.c
index 3d1dd48..375c04a 100644
--- a/source3/winbindd/idmap_ldap.c
+++ b/source3/winbindd/idmap_ldap.c
@@ -131,6 +131,7 @@ static NTSTATUS get_credentials( TALLOC_CTX *mem_ctx,
 			DEBUG(2, ("get_credentials: Failed to lookup ldap "
 				  "bind creds. Using anonymous connection.\n"));
 			anon = True;
+			*dn = NULL;
 		} else {
 			*dn = talloc_strdup(mem_ctx, user_dn);
 			SAFE_FREE( user_dn );


-- 
Samba Shared Repository


More information about the samba-cvs mailing list