diff options
author | Matthew Chapman <matty@samba.org> | 1999-09-22 04:32:19 +0000 |
---|---|---|
committer | Matthew Chapman <matty@samba.org> | 1999-09-22 04:32:19 +0000 |
commit | 1e3490dda918c9fe580c90cef6767c777c87c438 (patch) | |
tree | 644af2ebd7b25ff11545b1fe6b45258a2304eb0e | |
parent | f1c2fdb2704e04b05fe3247c53162006a25e75fb (diff) | |
download | samba-1e3490dda918c9fe580c90cef6767c777c87c438.tar.gz samba-1e3490dda918c9fe580c90cef6767c777c87c438.tar.bz2 samba-1e3490dda918c9fe580c90cef6767c777c87c438.zip |
Fixed an annoying bug in the LDAP code. Attributes not present in the
LDAP database were being initialised using unix_to_nt_time on -1, rather
than -1 as an NTTIME (which is very different).
Problems solved (hopefully):
* "Access Denied" when accessing an NT share in a Samba controlled domain.
* "Your password has expired" sometimes when logging in.
(This used to be commit 740d8388cb6dfebb26681a45fd1b293383d08a6d)
-rw-r--r-- | source3/passdb/sampassldap.c | 25 |
1 files changed, 3 insertions, 22 deletions
diff --git a/source3/passdb/sampassldap.c b/source3/passdb/sampassldap.c index e456b6ab43..fd503c3d27 100644 --- a/source3/passdb/sampassldap.c +++ b/source3/passdb/sampassldap.c @@ -83,11 +83,10 @@ static void ldap_read_time(char *attribute, NTTIME *nttime) time_t t; if(ldap_get_attribute(attribute, timestr)) + { t = (time_t)strtol(timestr, NULL, 16); - else - t = (time_t)(-1); - - unix_to_nt_time(nttime, t); + unix_to_nt_time(nttime, t); + } } @@ -116,48 +115,30 @@ static struct sam_passwd *ldapsam_getsam() if(ldap_get_attribute("gidNumber", temp)) sam21->unix_gid = atoi(temp); - else - sam21->unix_gid = (gid_t)(-1); if(ldap_get_attribute("grouprid", temp)) sam21->group_rid = strtol(temp, NULL, 16); - else - sam21->group_rid = 0xFFFFFFFF; if(ldap_get_attribute("cn", full_name)) sam21->full_name = full_name; - else - sam21->full_name = NULL; if(ldap_get_attribute("description", acct_desc)) sam21->acct_desc = acct_desc; - else - sam21->acct_desc = NULL; if(ldap_get_attribute("smbHome", home_dir)) sam21->home_dir = home_dir; - else - sam21->home_dir = NULL; if(ldap_get_attribute("homeDrive", home_drive)) sam21->dir_drive = home_drive; - else - sam21->dir_drive = NULL; if(ldap_get_attribute("script", logon_script)) sam21->logon_script = logon_script; - else - sam21->logon_script = NULL; if(ldap_get_attribute("profile", profile_path)) sam21->profile_path = profile_path; - else - sam21->profile_path = NULL; if(ldap_get_attribute("workstations", workstations)) sam21->workstations = workstations; - else - sam21->workstations = NULL; ldap_read_time("pwdCanChange", &sam21->pass_can_change_time); ldap_read_time("pwdMustChange", &sam21->pass_must_change_time); |