summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2004-01-30 23:37:38 +0000
committerAndrew Bartlett <abartlet@samba.org>2004-01-30 23:37:38 +0000
commitab7dd748a98361ac9c1c3ca52e9a97aee3f93e6f (patch)
tree604468b2f030376474aa3638bf728bfce2e77e66 /source
parent4dcf2f6e39ad07ead37815e9ed978099459b1569 (diff)
downloadsamba-ab7dd748a98361ac9c1c3ca52e9a97aee3f93e6f.tar.gz
samba-ab7dd748a98361ac9c1c3ca52e9a97aee3f93e6f.tar.xz
samba-ab7dd748a98361ac9c1c3ca52e9a97aee3f93e6f.zip
If we are setting the NT or LM password to NULL, remove the attribute
rather than writing XXXXX Andrew Bartlett
Diffstat (limited to 'source')
-rw-r--r--source/passdb/pdb_ldap.c48
1 files changed, 31 insertions, 17 deletions
diff --git a/source/passdb/pdb_ldap.c b/source/passdb/pdb_ldap.c
index 6e8ff835077..099283f6254 100644
--- a/source/passdb/pdb_ldap.c
+++ b/source/passdb/pdb_ldap.c
@@ -912,27 +912,41 @@ static BOOL init_ldap_from_sam (struct ldapsam_privates *ldap_state,
if ((pdb_get_acct_ctrl(sampass)&(ACB_WSTRUST|ACB_SVRTRUST|ACB_DOMTRUST))
|| (lp_ldap_passwd_sync()!=LDAP_PASSWD_SYNC_ONLY)) {
- pdb_sethexpwd(temp, pdb_get_lanman_passwd(sampass),
- pdb_get_acct_ctrl(sampass));
-
- if (need_update(sampass, PDB_LMPASSWD))
- smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, existing, mods,
- get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_LMPW),
- temp);
-
- pdb_sethexpwd (temp, pdb_get_nt_passwd(sampass),
- pdb_get_acct_ctrl(sampass));
-
- if (need_update(sampass, PDB_NTPASSWD))
- smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, existing, mods,
- get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_NTPW),
- temp);
+ if (need_update(sampass, PDB_LMPASSWD)) {
+ uchar *lm_pw = pdb_get_lanman_passwd(sampass);
+ if (lm_pw) {
+ pdb_sethexpwd(temp, lm_pw,
+ pdb_get_acct_ctrl(sampass));
+ smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, existing, mods,
+ get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_LMPW),
+ temp);
+ } else {
+ smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, existing, mods,
+ get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_LMPW),
+ NULL);
+ }
+ }
+ if (need_update(sampass, PDB_NTPASSWD)) {
+ uchar *nt_pw = pdb_get_nt_passwd(sampass);
+ if (nt_pw) {
+ pdb_sethexpwd(temp, nt_pw,
+ pdb_get_acct_ctrl(sampass));
+ smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, existing, mods,
+ get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_NTPW),
+ temp);
+ } else {
+ smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, existing, mods,
+ get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_NTPW),
+ NULL);
+ }
+ }
- slprintf (temp, sizeof (temp) - 1, "%li", pdb_get_pass_last_set_time(sampass));
- if (need_update(sampass, PDB_PASSLASTSET))
+ if (need_update(sampass, PDB_PASSLASTSET)) {
+ slprintf (temp, sizeof (temp) - 1, "%li", pdb_get_pass_last_set_time(sampass));
smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, existing, mods,
get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_PWD_LAST_SET),
temp);
+ }
}
/* FIXME: Hours stuff goes in LDAP */