[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