[dev] passwd not working after upgrading to 3.1

Manilal K M manilal at ejyothi.com
Tue Mar 31 11:43:38 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>:
>>>>>
>>>>>>
>>>>>> 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')) {
>
> That's correct. I even went a step further and moved the _connect()  
> call completely out of _lookupdn() right before that if-call.
>
> Jan.

Makes sense and it makes the code clean. Thanks for the support and  
immediate response.

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



More information about the dev mailing list