Author: gd Date: 2006-06-09 12:55:07 +0000 (Fri, 09 Jun 2006) New Revision: 16121
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16121 Log: Fix a eDir related memory leak. Guenther Modified: branches/SAMBA_3_0/source/passdb/pdb_ldap.c trunk/source/passdb/pdb_ldap.c Changeset: Modified: branches/SAMBA_3_0/source/passdb/pdb_ldap.c =================================================================== --- branches/SAMBA_3_0/source/passdb/pdb_ldap.c 2006-06-09 12:43:34 UTC (rev 16120) +++ branches/SAMBA_3_0/source/passdb/pdb_ldap.c 2006-06-09 12:55:07 UTC (rev 16121) @@ -730,14 +730,21 @@ 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)); } Modified: trunk/source/passdb/pdb_ldap.c =================================================================== --- trunk/source/passdb/pdb_ldap.c 2006-06-09 12:43:34 UTC (rev 16120) +++ trunk/source/passdb/pdb_ldap.c 2006-06-09 12:55:07 UTC (rev 16121) @@ -730,14 +730,21 @@ 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)); }
