summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2006-06-09 14:59:04 +0000
committerGerald Carter <jerry@samba.org>2006-06-09 14:59:04 +0000
commit004bfa4709ef522b05b35f1548954db380303827 (patch)
treecd0ea4f47b7e63ed5c8039ae3fe2a295057b10c0
parent40c1fd5fe6d7e853128919c5fa8633e2cc68b6c4 (diff)
downloadsamba-004bfa4709ef522b05b35f1548954db380303827.tar.gz
r16124: catch a couple of fixes from Guenther
-rw-r--r--WHATSNEW.txt3
-rw-r--r--source/include/smbldap.h1
-rw-r--r--source/lib/smbldap.c2
-rw-r--r--source/passdb/pdb_ldap.c11
4 files changed, 15 insertions, 2 deletions
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index e65dbfa75eb..d37a40e82e8 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -65,6 +65,9 @@ o Guenther Deschner <gd@samba.org>
* Correct "net ads changetrustpw" to use the sAMAccountName.
* Fix winbindd in ADS domains by removing code using the
UPN and rely upon the sAMAccountName.
+ * Fix a eDir related memory leak.
+ * Don't try to add the sn attribute twice to an LDAP
+ inetOrgPerson + samSamAccount entry.
o Aleksey Fedoseev <fedoseev@ru.ibm.com>
diff --git a/source/include/smbldap.h b/source/include/smbldap.h
index 6cfde13f4a9..ae54e66b369 100644
--- a/source/include/smbldap.h
+++ b/source/include/smbldap.h
@@ -101,6 +101,7 @@ struct smbldap_state;
#define LDAP_ATTR_MOD_TIMESTAMP 41
#define LDAP_ATTR_LOGON_HOURS 42
#define LDAP_ATTR_TRUST_PASSWD_FLAGS 43
+#define LDAP_ATTR_SN 44
typedef struct _attrib_map_entry {
diff --git a/source/lib/smbldap.c b/source/lib/smbldap.c
index dfa6782afef..5b18f4e3113 100644
--- a/source/lib/smbldap.c
+++ b/source/lib/smbldap.c
@@ -52,6 +52,7 @@ ATTRIB_MAP_ENTRY attrib_map_v22[] = {
{ LDAP_ATTR_LOGOFF_TIME, "logoffTime" },
{ LDAP_ATTR_KICKOFF_TIME, "kickoffTime" },
{ LDAP_ATTR_CN, "cn" },
+ { LDAP_ATTR_SN, "sn" },
{ LDAP_ATTR_DISPLAY_NAME, "displayName" },
{ LDAP_ATTR_HOME_PATH, "smbHome" },
{ LDAP_ATTR_HOME_DRIVE, "homeDrive" },
@@ -106,6 +107,7 @@ ATTRIB_MAP_ENTRY attrib_map_v30[] = {
{ LDAP_ATTR_LOGOFF_TIME, "sambaLogoffTime" },
{ LDAP_ATTR_KICKOFF_TIME, "sambaKickoffTime" },
{ LDAP_ATTR_CN, "cn" },
+ { LDAP_ATTR_SN, "sn" },
{ LDAP_ATTR_DISPLAY_NAME, "displayName" },
{ LDAP_ATTR_HOME_DRIVE, "sambaHomeDrive" },
{ LDAP_ATTR_HOME_PATH, "sambaHomePath" },
diff --git a/source/passdb/pdb_ldap.c b/source/passdb/pdb_ldap.c
index fbc6378f685..79c1eda459c 100644
--- a/source/passdb/pdb_ldap.c
+++ b/source/passdb/pdb_ldap.c
@@ -730,14 +730,21 @@ static BOOL init_sam_from_ldap(struct ldapsam_privates *ldap_state,
pwd_len = sizeof(clear_text_pw);
if (pdb_nds_get_password(ldap_state->smbldap_state, user_dn, &pwd_len, clear_text_pw) == LDAP_SUCCESS) {
nt_lm_owf_gen(clear_text_pw, smbntpwd, smblmpwd);
- if (!pdb_set_lanman_passwd(sampass, smblmpwd, PDB_SET))
+ if (!pdb_set_lanman_passwd(sampass, smblmpwd, PDB_SET)) {
+ SAFE_FREE(user_dn);
return False;
+ }
ZERO_STRUCT(smblmpwd);
- if (!pdb_set_nt_passwd(sampass, smbntpwd, PDB_SET))
+ if (!pdb_set_nt_passwd(sampass, smbntpwd, PDB_SET)) {
+ SAFE_FREE(user_dn);
return False;
+ }
ZERO_STRUCT(smbntpwd);
use_samba_attrs = False;
}
+
+ SAFE_FREE(user_dn);
+
} else {
DEBUG(0, ("init_sam_from_ldap: failed to get user_dn for '%s'\n", username));
}