diff --git a/include/class_filterLDAP.inc b/include/class_filterLDAP.inc index a887dd0a643bba9235d0451dccdb26645606f66b..5e677b4bbb7e8eac5a5a55e11a6ec2ac4f6ea9e7 100644 --- a/include/class_filterLDAP.inc +++ b/include/class_filterLDAP.inc @@ -122,6 +122,7 @@ class filterLDAP // Do search for every base $result = array(); $limit_exceeded = FALSE; + $ui->getSizeLimitHandler()->setLimitExceeded(FALSE); foreach ($bases as $base => $dnFilters) { // Break if the size limit is exceeded @@ -140,7 +141,7 @@ class filterLDAP $ldap->search('(&'.$filter.$dnFilter.')', $attributes, $scope); // Check for size limit exceeded messages for GUI feedback - if (preg_match("/size limit/i", $ldap->get_error())) { + if ($ldap->hitSizeLimit()) { $ui->getSizeLimitHandler()->setLimitExceeded(); $limit_exceeded = TRUE; } diff --git a/include/class_ldap.inc b/include/class_ldap.inc index 038a697d07862d5427cbd0a9f90a0efeff28f7f2..eb0ebb9893eee29962d75d9d50e4f2a2866a80e1 100644 --- a/include/class_ldap.inc +++ b/include/class_ldap.inc @@ -902,6 +902,31 @@ class LDAP } } + /*! + * \brief Get the errno + * + * Must be run right after the ldap request + */ + function get_errno() + { + if ($this->error == 'Success') { + return 0; + } else { + return ldap_errno($this->cid); + } + } + + /*! + * \brief Check if the search hit the size limit + * + * Must be run right after the search + */ + function hitSizeLimit() + { + /* LDAP_SIZELIMIT_EXCEEDED 0x04 */ + return ($this->get_errno() == 0x04); + } + function get_credentials($url, $referrals = NULL) { $ret = array(); diff --git a/include/class_ldapSizeLimit.inc b/include/class_ldapSizeLimit.inc index 01fe97de4b229babc8701017fbd11d5e98b57a89..32d3666fb721c0ef9b634097e8f9d454d3a3b9b5 100644 --- a/include/class_ldapSizeLimit.inc +++ b/include/class_ldapSizeLimit.inc @@ -44,7 +44,7 @@ class ldapSizeLimit global $config; $this->sizeLimit = $config->get_cfg_value('LDAPSIZELIMIT', 200); - $this->ignore = preg_match('/true/i', $config->get_cfg_value('LDAPSIZEIGNORE')); + $this->ignore = preg_match('/true/i', $config->get_cfg_value('LDAPSIZEIGNORE', 'TRUE')); } function getSizeLimit()