diff options
author | Günther Deschner <gd@samba.org> | 2006-06-09 12:55:07 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:17:21 -0500 |
commit | 322f1664df553d95fcdfc24f19bd7f34ce9b834b (patch) | |
tree | 5a33fa4727a725b1194dc6b1e7471a8b21dd6b4c /source/passdb | |
parent | f6516a799aec2db819f79b9a1e641637422a9b4c (diff) | |
download | samba-322f1664df553d95fcdfc24f19bd7f34ce9b834b.tar.gz samba-322f1664df553d95fcdfc24f19bd7f34ce9b834b.tar.xz samba-322f1664df553d95fcdfc24f19bd7f34ce9b834b.zip |
r16121: Fix a eDir related memory leak.
Guenther
Diffstat (limited to 'source/passdb')
-rw-r--r-- | source/passdb/pdb_ldap.c | 11 |
1 files changed, 9 insertions, 2 deletions
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)); } |