On 22/6/04 12:24 pm, Mike Jackson <[EMAIL PROTECTED]> wrote:
> Hi,
> There is a bug in Net::LDAP::LDIF when parsing change records.
>
> Refer to RFC 2849, Pages 9 and 10:
> ---------------------------------------------------------------
> # Modify an entry's relative distinguished name
> dn: cn=Paul Jensen, ou=Product Development, dc=airius, dc=com
> changetype: modrdn
> newrdn: cn=Paula Jensen
> deleteoldrdn: 1
> ---------------------------------------------------------------
>
> The changetype attribute is listed in the LDIF before the attribute to
> be changed is listed. This is also the way OpenLDAP's ldapmodify tool
> parses the LDIF change records.
>
> Net::LDAP::LDIF fails to parse the records properly if the changetype
> attribute comes before the attribute to be changed. The result is that
> the $entry->attributes() method will return an empty list of attributes.
>
> Net::LDAP::LDIF _should_ parse
> ---------------------------------------------------------------
> dn: cn=foo,o=bar
> changetype: modify
> add: newAttrib
> newAttrib: someValue
> ---------------------------------------------------------------
>
> however
>
> Net::LDAP::LDIF expects
> ---------------------------------------------------------------
> dn: cn=foo,o=bar
> add: newAttrib
> changetype: modify
> newAttrib: someValue
> ---------------------------------------------------------------
>
>
> I wrote a parsing function that can take an LDIF file which has new
> records and change records, and call add or modify respectively. It uses
> logic like this:
>
> for my $attrib ( $entry->attributes() ) {
> if ( $attrib =~ /changetype/ ) {
> $record->{entrytype} = "change";
> last;
> } else {
> $record->{entrytype} = "new";
> }
> }
> push @entries, $record;
>
>
> My parsing of the entrytype fails when the $entry->attributes() list is
> empty, unless I modify my LDIF change records to suit Net::LDAP::LDIF.
> And then they can't be used with OpenLDAP tools...
>
> Comments?
>
> Thanks!
Mike,
Do you still get this with the version of LDIF.pm from subversion, ie
$VERSION="0.14_03"?
<URL:http://svn.mutatus.co.uk/browse/perl-ldap/trunk/>
Cheers,
Chris