--- /usr/sbin/smbldap-passwd 2008-09-26 10:36:21.000000000 +0200 +++ smbldap-passwd.patched 2008-09-26 10:38:25.000000000 +0200 @@ -88,6 +88,7 @@ my ($dn,$ldap_master); +my $dn_line; # First, connecting to the directory if ($< != 0) { # non-root user @@ -102,7 +103,8 @@ $config{masterDN}="uid=$user,$config{usersdn}"; $config{masterPw}="$oldpass"; $ldap_master=connect_ldap_master(); - $dn=$config{masterDN}; + $dn_line=get_user_dn($user); + $dn=get_dn_from_line($dn_line); if (!is_user_valid($user, $dn, $oldpass)) { print "Authentication failure\n"; exit (10); @@ -198,7 +200,7 @@ if ($< != 0) { # if we are not root, we close the connection to re-open it as a normal user $ldap_master->unbind; - $config{masterDN}="uid=$user,$config{usersdn}"; + $config{masterDN}="$dn"; $config{masterPw}="$oldpass"; $ldap_master=connect_ldap_master(); }