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));
                }

Reply via email to