From 0b153abaa818ff0a6e4e186dd4cf5cfb3520380e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Thu, 1 Jul 2021 10:05:44 +0200
Subject: [PATCH] :ambulance: fix(core) Correctly detect LDAP error during
 login.

Avoids PHP errors and shows the actual LDAP error when there is a
 problem for fetching connected user.

issue #6175
---
 include/class_ldap.inc     | 2 +-
 include/class_userinfo.inc | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index df420ee05..a1fbdfdaa 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -1119,7 +1119,7 @@ class LDAP
     if ($this->error == 'Success') {
       return 0;
     } else {
-      return ldap_errno($this->cid);
+      return @ldap_errno($this->cid);
     }
   }
 
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index 855931de3..583612c45 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -87,6 +87,9 @@ class userinfo
     $ldap = $config->get_ldap_link();
     $ldap->cat($this->dn, ['*']);
     $attrs = $ldap->fetch(TRUE);
+    if (!$ldap->success()) {
+      throw new FusionDirectoryLdapError($this->dn, LDAP_SEARCH, $ldap->get_error(), $ldap->get_errno());
+    }
 
     $this->uid = $attrs['uid'][0];
 
-- 
GitLab