[dev] passwd not working after upgrading to 3.1

Manilal K M manilal at ejyothi.com
Tue Mar 31 09:56:03 UTC 2009


Quoting Jan Schneider <jan at horde.org>:

> Zitat von Manilal K M <manilal at ejyothi.com>:
>
>>
>> Quoting Jan Schneider <jan at horde.org>:
>>
>>> Zitat von Manilal K M <manilal at ejyothi.com>:
>>>
>>>>
>>>> Quoting Jan Schneider <jan at horde.org>:
>>>>
>>>>> Zitat von Manilal K M <manilal at ejyothi.com>:
>>>>>
>>>>>> passwd/config/backends.php (This is the same file which was  
>>>>>> used with 3.0.1):
>>>>>> $backends['ldap'] = array(
>>>>>
>>>>> *Never* update to a newer version without updating the  
>>>>> configuration files.
>>>>>
>>>>
>>>> I have also tried a fresh installation of passwd-3.1 and modified  
>>>> config/backend.php and config/hooks.php manually. But still I get  
>>>> the same error.
>>>>
>>>> "Failure in changing password for LDAP Server: Could not bind to  
>>>> LDAP server"
>>>>
>>>> However, when I tried changing the password with a wrong  
>>>> password, then it says the current password is wrong(expected  
>>>> behaviour). This means that with the configuration provided  
>>>> passwd is capable of retrieving the  current password and the  
>>>> problem arises only when it's trying to update new password.
>>>
>>> Check the ldap logs.
>>>
>>
>> I have checked the ldap logs and the there were no bind requests from Horde.
>>
>> On closer analysis of passwd/lib/Driver/ldap.php, it is found that  
>> the function changePassword missed _connect(). I have created a  
>> patch for this bug. Since I'm not sure about the attachments in  
>> this mailing list, I'm pasting it here:
>>
>> diff -ur passwd-h3-3.1-orig/lib/Driver/ldap.php  
>> passwd-h3-3.1/lib/Driver/ldap.php
>> --- passwd-h3-3.1-orig/lib/Driver/ldap.php      2009-03-31  
>> 14:56:38.000000000 +0530
>> +++ passwd-h3-3.1/lib/Driver/ldap.php   2009-03-31 14:58:13.000000000 +0530
>> @@ -147,6 +147,12 @@
>>                 return $userdn;
>>             }
>>         }
>> +
>> +       // Connect to the LDAP server
>> +       $result = $this->_connect();
>> +        if (is_a($result, 'PEAR_Error')) {
>> +            return $result;
>> +        }
>>
>>         // Connect as the admin DN if configured; otherwise as the user
>>         if (!empty($this->_params['admindn'])) {
>>
>>
>> I could also create a bug in bugs.horde.org and upload the patch(if  
>> needed).  Otherwise please review the patch and commit.
>
> Do you use the userdn hook?
>
> Jan.

Your  question made me rethink about the patch. I think the problem  
occurs only if we use userdn hook. In that case the call to _connect()  
should be moved into the if condition. Please check this:

diff -ur passwd-h3-3.1-orig/lib/Driver/ldap.php  
passwd-h3-3.1/lib/Driver/ldap.php
--- passwd-h3-3.1-orig/lib/Driver/ldap.php      2009-03-31  
14:56:38.000000000 +0530
+++ passwd-h3-3.1/lib/Driver/ldap.php   2009-03-31 15:25:07.000000000 +0530
@@ -141,6 +141,11 @@
              $userdn = Horde::callHook('_passwd_hook_userdn',
                                        array(Auth::getAuth()),
                                        'passwd');
+           // Connect to the LDAP server
+           $result = $this->_connect();
+            if (is_a($result, 'PEAR_Error')) {
+                return $result;
+            }
          } else {
              $userdn = $this->_lookupdn($username);
              if (is_a($userdn, 'PEAR_Error')) {

regards

-- 
Manilal K M
eJyothi Services
http://www.ejyothi.com



More information about the dev mailing list