Author: mimir
Date: 2004-08-10 21:15:27 +0000 (Tue, 10 Aug 2004)
New Revision: 1705
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/&rev=1705&nolog=1
Log:
1) When updating skip the password when it's zero length or put it (even
if empty) otherwise
2) Use snprintf functions instead of slprintf, which is the same btw
3) Skip trust flags field if zero
rafal
Modified:
trunk/source/passdb/pdb_ldap.c
Changeset:
Modified: trunk/source/passdb/pdb_ldap.c
===================================================================
--- trunk/source/passdb/pdb_ldap.c 2004-08-10 21:05:08 UTC (rev 1704)
+++ trunk/source/passdb/pdb_ldap.c 2004-08-10 21:15:27 UTC (rev 1705)
@@ -3275,6 +3275,7 @@
return False;
}
+ /* Attribute names to avoid extra calls get_attr_key2string and make code
clearer */
attr_domain = get_attr_key2string(trustpw_attr_list, LDAP_ATTR_DOMAIN);
attr_ntpw = get_attr_key2string(trustpw_attr_list, LDAP_ATTR_NTPW);
attr_sid = get_attr_key2string(trustpw_attr_list, LDAP_ATTR_SID);
@@ -3295,19 +3296,21 @@
}
/* Trust password itself */
- if (strlen(pdb_get_tp_pass(trustpw))) {
- pdb_sethexpwd(hexpwd, pdb_get_tp_pass(trustpw), 0);
- if (entry) {
+ pdb_sethexpwd(hexpwd, pdb_get_tp_pass(trustpw), 0);
+ if (entry) {
+ /* in case of updating we only need to do that if anything has been
+ entered at new password prompt */
+ if (strlen(pdb_get_tp_pass(trustpw))) {
ret =
smbldap_get_single_attribute(ldap_state->smbldap_state->ldap_struct, entry,
attr_ntpw, attr_val,
sizeof(attr_val));
if (ret)
if (strncmp(hexpwd, attr_val, sizeof(attr_val)))
smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, entry, mod,
attr_ntpw, hexpwd);
- } else {
- smbldap_make_mod(ldap_state->smbldap_state->ldap_struct,
entry, mod,
- attr_ntpw, hexpwd);
}
+ } else {
+ smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, entry, mod,
+ attr_ntpw, hexpwd);
}
/* SID of the trust password */
@@ -3326,7 +3329,7 @@
}
/* Last change time */
- slprintf(mtime_str, sizeof(mtime_str) - 1, "%li",
pdb_get_tp_mod_time(trustpw));
+ snprintf(mtime_str, sizeof(mtime_str) - 1, "%li",
pdb_get_tp_mod_time(trustpw));
if (entry) {
ret =
smbldap_get_single_attribute(ldap_state->smbldap_state->ldap_struct, entry,
attr_lct, attr_val,
sizeof(attr_val));
@@ -3340,14 +3343,16 @@
}
/* Trust type flags */
- slprintf(flags_str, sizeof(flags_str) - 1, "%i", pdb_get_tp_flags(trustpw));
+ snprintf(flags_str, sizeof(flags_str) - 1, "%i", pdb_get_tp_flags(trustpw));
if (entry) {
- ret =
smbldap_get_single_attribute(ldap_state->smbldap_state->ldap_struct, entry,
- attr_flags, attr_val,
sizeof(attr_val));
- if (ret)
- if (strncmp(flags_str, attr_val, sizeof(attr_val)))
-
smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, entry, mod,
- attr_flags, flags_str);
+ if (pdb_get_tp_flags(trustpw)) {
+ ret =
smbldap_get_single_attribute(ldap_state->smbldap_state->ldap_struct, entry,
+ attr_flags, attr_val,
sizeof(attr_val));
+ if (ret)
+ if (strncmp(flags_str, attr_val, sizeof(attr_val)))
+
smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, entry, mod,
+ attr_flags, flags_str);
+ }
} else {
smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, entry, mod,
attr_flags, flags_str);
@@ -3649,7 +3654,7 @@
ldap_op = LDAP_MOD_ADD;
/* DN of the object being added */
- slprintf(dn, sizeof(dn) - 1, "%s=%s,%s=%s,%s",
get_attr_key2string(trustpw_attr_list, LDAP_ATTR_DOMAIN),
+ snprintf(dn, sizeof(dn) - 1, "%s=%s,%s=%s,%s",
get_attr_key2string(trustpw_attr_list, LDAP_ATTR_DOMAIN),
dom_name, get_attr_key2string(dominfo_attr_list, LDAP_ATTR_DOMAIN),
lp_workgroup(),
lp_ldap_suffix());
@@ -3753,7 +3758,7 @@
ldap_op = LDAP_MOD_REPLACE;
/* DN of the object being added */
- slprintf(dn, sizeof(dn) - 1, "%s=%s,%s=%s,%s",
get_attr_key2string(trustpw_attr_list, LDAP_ATTR_DOMAIN),
+ snprintf(dn, sizeof(dn) - 1, "%s=%s,%s=%s,%s",
get_attr_key2string(trustpw_attr_list, LDAP_ATTR_DOMAIN),
dom_name, get_attr_key2string(dominfo_attr_list, LDAP_ATTR_DOMAIN),
lp_workgroup(),
lp_ldap_suffix());