ppolicy control and change password exop (again)

Guillaume Rousse <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.ldap
Message-ID <[email protected]>
Hello list.

Some time ago, I had an issue with set_password() not handling controls:
http://www.nntp.perl.org/group/perl.ldap/2008/09/msg2950.html

It was fixed in perl-ldap 0.38.

I also opened an ITS in openldap, because apparently password modify 
exop was not returning ppolicy control correctly:
http://www.openldap.org/lists/openldap-bugs/200809/msg00178.html

It was fixed in openldap 2.4.12

However, it still doesn't work. The following test case shows than the 
value returned by $response->control( LDAP_CONTROL_PASSWORDPOLICY ) is 
always '1', instead of an instance of Net::LDAP::Control::PasswordPolicy 
class.

#!/usr/bin/perl
use Net::LDAP;
use Net::LDAP::Extension::SetPassword;
use Net::LDAP::Control::PasswordPolicy;
use Net::LDAP::Constant qw( LDAP_CONTROL_PASSWORDPOLICY );
use Data::Dumper;

my $ldap = Net::LDAP->new(
     'ldaps://ldap.domain.com',
     verify => 'require',
     capath => '/etc/pki/tls/certs'
) or die "impossible to connect: $@";

my $pp = Net::LDAP::Control::PasswordPolicy->new();
my $result = $ldap->bind(
     shift,
     password => shift,
);
die 'impossible to bind: ' . $result->error() if $result->code();

$result = $ldap->set_password(
     newpasswd => 'a',
     control   => [ $pp ]
);

my $response = $result->control(LDAP_CONTROL_PASSWORDPOLICY);
print Dumper($response);

[root@etoile ~]# perl test.pl <user> <password>
$VAR1 = 1;

Before I reopen the ITS, I'd like to be sure my perl code is correct 
first. In particular, is this normal to send a control object in the 
request, and to get another distinct control object from the response ?

I tested with perl-ldap 0.39.
-- 
BOFH excuse #333:

A plumber is needed, the network drain is clogged
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.