r16121: Fix a eDir related memory leak.
authorGünther Deschner <gd@samba.org>
Fri, 9 Jun 2006 12:55:07 +0000 (12:55 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:17:21 +0000 (11:17 -0500)
Guenther
(This used to be commit 322f1664df553d95fcdfc24f19bd7f34ce9b834b)

source3/passdb/pdb_ldap.c

index fbc6378f685879bd595530778923f83514763251..79c1eda459c4ee4d0805cbade8784c0815d61fa1 100644 (file)
@@ -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));
                }