Hi list,
a while ago i installed the smbldap-tools 0.8.5 on a 'SUSE LINUX
Enterprise Server 9 (x86_64)' system. Now the 'smbldap-tools' (using
the Net::LDAP lib) aren't working anymore but they worked perfectly
before. I can't tell you what was changed as the error ocurred the
first time.

I found the method where the errror occurs and attached the Net::Ldap
debug out and the relevant parts of the source.

It happens in:

$mesg->code && die $mesg->error;

The error message is:

decode error 16<=>30 at
/usr/lib/perl5/site_perl/5.8.3/Convert/ASN1/_decode.pm line 110, <DATA>
line 283.

Anyone had an similar error? Maybe it has something to do with the 64b
it system ? I have perl 5.8.3 installed.

thanx,
chris



----------------------------------
 Debug out:
----------------------------------
Net::LDAP=HASH(0xbcc870) sending:
0000  103: SEQUENCE {
0002    1:   INTEGER = 3
0005   98:   [APPLICATION 3] {
0007   31:     STRING = 'dc=geog,dc=uni-heidelberg,dc=de'
0028    1:     ENUM = 2
002B    1:     ENUM = 2
002E    1:     INTEGER = 0
0031    1:     INTEGER = 0
0034    1:     BOOLEAN = FALSE
0037   46:     [CONTEXT 0] {
0039   27:       [CONTEXT 3] {
003B   11:         STRING = 'objectclass'
0048   12:         STRING = 'posixAccount'
0056     :       }
0056   15:       [CONTEXT 3] {
0058    3:         STRING = 'uid'
005D    8:         STRING = 'csengsto'
0067     :       }
0067     :     }
0067    0:     SEQUENCE {
0069     :     }
0069     :   }
0069     : }
Net::LDAP=HASH(0xbcc870) received:
0000    3: [UNIVERSAL 22]
0002     :   01 00 04 __ __ __ __ __ __ __ __ __ __ __ __ __ ...
decode error 16<=>30 at
/usr/lib/perl5/site_perl/5.8.3/Convert/ASN1/_decode.pm line 110, <DATA>
line 283.


----------------------------------
 A ldap search
----------------------------------
sub read_user
  {
      my $user = shift;
      my $lines ='';
      $ldap->debug(12);
      my $mesg = $ldap->search ( # perform a search
           base   => $config{suffix},
           scope => $config{scope},
           filter => "(&(objectclass=posixAccount)(uid=$user))"
      );
      $mesg->code && die $mesg->error;
      foreach my $entry ($mesg->all_entries) {
          $lines.= "dn: " . $entry->dn."\n";
          foreach my $attr ($entry->attributes) {
                {
                  $lines.= $attr.": ".join(',',
$entry->get_value($attr))."\n";
                }
          }
        }
        chomp $lines;
        if ($lines eq '') {
          return undef;
        }
        return $lines;
  }


----------------------------------
 Connecting to ldap:
----------------------------------

sub connect_ldap_slave
  {
     # bind to a directory with dn and password
     my $conf_cert;
     my $ldap_slave = Net::LDAP->new(
        "$config{slaveLDAP}",
        port => "$config{slavePort}",
        version => 3,
        timeout => 60,
        # debug => 0xffff,
     )
     or warn "erreur LDAP: Can't contact slave ldap server
($@)\n=>trying to contact the master server\n";
     if (!$ldap_slave) {
        print("connection to the slave failed: trying to contact the
master ...\n");
        $ldap_slave = Net::LDAP->new(
            "$config{masterLDAP}",
            port => "$config{masterPort}",
            version => 3,
            timeout => 60,
            # debug => 0xffff,
        )
        or die "erreur LDAP: Can't contact master ldap server ($@)\n";
      }
      if ($ldap_slave) {
         if ($config{ldapTLS} == 1) {
           $ldap_slave->start_tls(
             verify => "$config{verify}",
             clientcert => "$config{clientcert}",
             clientkey => "$config{clientkey}",
             cafile => "$config{cafile}"
           );
         }
         $ldap_slave->bind ( "$config{masterDN}",
               password => "$config{masterPw}"
         );
         $ldap=$ldap_slave;
         return($ldap_slave);
      }
  }

Reply via email to