On a host that has an LDAP server running, try:

perl -MNet::LDAP -e 'my $ldap = Net::LDAP->new ('localhost'); $ldap->sync'

You'll get a failure like:

Can't use an undefined value as a HASH reference
at /usr/share/perl5/Net/LDAP.pm line 742, <DATA> line 228.

I've attached a patch that guards against this situation arising; it
would be nice if it could be included in a future version of the module.

Thanks for developing Net::LDAP!

Mike.
--- /usr/share/perl5/Net/LDAP.pm.~1~    2007-02-10 17:44:18.000000000 -0600
+++ /usr/share/perl5/Net/LDAP.pm        2008-02-06 16:01:27.000000000 -0600
@@ -738,9 +738,11 @@
   my $table = $ldap->{net_ldap_mesg};
   my $err   = LDAP_SUCCESS;
 
-  $mid = $mid->mesg_id if ref($mid);
-  while (defined($mid) ? exists $table->{$mid} : %$table) {
-    last if $err = $ldap->process($mid);
+  if (defined($table)) {
+    $mid = $mid->mesg_id if ref($mid);
+    while (defined($mid) ? exists $table->{$mid} : keys %$table) {
+      last if $err = $ldap->process($mid);
+    }
   }
 
   $err;

Reply via email to