--- smbldap-passwd.orig 2008-06-25 11:28:08.000000000 +0200 +++ smbldap-passwd 2008-06-25 11:37:57.000000000 +0200 @@ -266,22 +266,17 @@ if ( $update_unix_passwd ) { my $shadowLastChange=int(time()/86400); my $modify; + my @mods; if ($< != 0) { - $modify = $ldap_master->modify ( "$dn", - changes => [ - replace => [userPassword => "$hash_password"], - replace => [shadowLastChange => "$shadowLastChange"] - ] - ); + push @mods, 'userPassword' => "$hash_password"; } else { - $modify = $ldap_master->modify ( "$dn", - changes => [ - replace => [userPassword => "$hash_password"], - replace => [shadowLastChange => "$shadowLastChange"], - replace => [shadowMax => "$config{defaultMaxPasswordAge}"] - ] - ); + push @mods, 'userPassword' => "$hash_password"; + push @mods, 'shadowLastChange' => "$shadowLastChange"; + if ( defined $config{defaultMaxPasswordAge} ) { + push @mods, 'shadowMax' => "$config{defaultMaxPasswordAge}"; + } } + $modify = $ldap_master->modify ( "$dn", 'replace' => { @mods } ); $modify->code && warn "Failed to modify UNIX password: ", $modify->error ; }