diff options
author | Côme Chilliet <come.chilliet@nextcloud.com> | 2023-03-13 16:05:41 +0100 |
---|---|---|
committer | Côme Chilliet <come.chilliet@nextcloud.com> | 2023-03-13 16:05:41 +0100 |
commit | d82d6df646e052a10540779923ca245d3dd105bd (patch) | |
tree | 6c1642125d0a424c50be283b2b5c873fa5d26579 /apps/user_ldap/lib | |
parent | 4b79e75072f59d2ada4a95413e730a14fe461e9c (diff) | |
download | nextcloud-server-d82d6df646e052a10540779923ca245d3dd105bd.tar.gz nextcloud-server-d82d6df646e052a10540779923ca245d3dd105bd.zip |
Do not send a pagination control with size = 0 if cookie is empty
It only makes sense to send a pagination control with size 0 with a
cookie to abandon a paged search.
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Diffstat (limited to 'apps/user_ldap/lib')
-rw-r--r-- | apps/user_ldap/lib/LDAP.php | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/apps/user_ldap/lib/LDAP.php b/apps/user_ldap/lib/LDAP.php index 5730907b653..41a6f651f3b 100644 --- a/apps/user_ldap/lib/LDAP.php +++ b/apps/user_ldap/lib/LDAP.php @@ -190,14 +190,18 @@ class LDAP implements ILDAPWrapper { * {@inheritDoc} */ public function search($link, $baseDN, $filter, $attr, $attrsOnly = 0, $limit = 0, int $pageSize = 0, string $cookie = '') { - $serverControls = [[ - 'oid' => LDAP_CONTROL_PAGEDRESULTS, - 'value' => [ - 'size' => $pageSize, - 'cookie' => $cookie, - ], - 'iscritical' => false, - ]]; + if ($pageSize > 0 || $cookie !== '') { + $serverControls = [[ + 'oid' => LDAP_CONTROL_PAGEDRESULTS, + 'value' => [ + 'size' => $pageSize, + 'cookie' => $cookie, + ], + 'iscritical' => false, + ]]; + } else { + $serverControls = []; + } $oldHandler = set_error_handler(function ($no, $message, $file, $line) use (&$oldHandler) { if (strpos($message, 'Partial search results returned: Sizelimit exceeded') !== false) { @@ -387,7 +391,7 @@ class LDAP implements ILDAPWrapper { if ($this->isResource($this->curArgs[0])) { $resource = $this->curArgs[0]; } elseif ( - $functionName === 'ldap_search' + $functionName === 'ldap_search' && is_array($this->curArgs[0]) && $this->isResource($this->curArgs[0][0]) ) { |