Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed exception thrown when logging in as an LDAP user due to a direc… #34141

Conversation

Adambean
Copy link

Fixed exception thrown when logging in as an LDAP user due to a directory not having password policy attributes available.

#33622

Signed-off-by: Adam Reece adam@reece.wales

…tory not having password policy attributes available.

nextcloud#33622

Signed-off-by: Adam Reece <adam@reece.wales>
@szaimen szaimen added the 3. to review Waiting for reviews label Sep 21, 2022
@szaimen szaimen added this to the Nextcloud 26 milestone Sep 21, 2022
$result = $this->access->search('objectclass=*', $ppolicyDN, ['pwdgraceauthnlimit', 'pwdmaxage', 'pwdexpirewarning']);
$this->connection->writeToCache($cacheKey, $result);
}

if (is_null($result) || !is_array($result) || empty($result[0]) || !is_array($result[0])) {

Check failure

Code scanning / Psalm

TypeDoesNotContainNull

Type array<array-key, mixed> for $result is never null
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check is wrong. This variable being null as a result of the LDAP search is precisely the cause of the bug. A null check needs to happen here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure it is null and not false?
I’m pretty sure it can never be null.

Also, if you do not have ppolicy you should leave "Default password policy DN" empty and this code will never run.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello,

Just checked again on OC 25.0.2. $result is an empty array, which would be why my additional checks (is not an array, or 1st element unset, or 1st element is not an array) trap the problem before the 1st element of the (expected to be) array is accessed.

$result = $this->access->search('objectclass=*', $ppolicyDN, ['pwdgraceauthnlimit', 'pwdmaxage', 'pwdexpirewarning']);
$this->connection->writeToCache($cacheKey, $result);
}

if (is_null($result) || !is_array($result) || empty($result[0]) || !is_array($result[0])) {

Check failure

Code scanning / Psalm

TypeDoesNotContainType

Type array<array-key, mixed> for $result is always array
$result = $this->access->search('objectclass=*', $ppolicyDN, ['pwdgraceauthnlimit', 'pwdmaxage', 'pwdexpirewarning']);
$this->connection->writeToCache($cacheKey, $result);
}

if (is_null($result) || !is_array($result) || empty($result[0]) || !is_array($result[0])) {

Check failure

Code scanning / Psalm

TypeDoesNotContainNull

Cannot resolve types for $result - array<array-key, mixed> does not contain null
$result = $this->access->search('objectclass=*', $ppolicyDN, ['pwdgraceauthnlimit', 'pwdmaxage', 'pwdexpirewarning']);
$this->connection->writeToCache($cacheKey, $result);
}

if (is_null($result) || !is_array($result) || empty($result[0]) || !is_array($result[0])) {

Check failure

Code scanning / Psalm

TypeDoesNotContainType

Type array<array-key, mixed> for $result is always array
$result = $this->access->search('objectclass=*', $ppolicyDN, ['pwdgraceauthnlimit', 'pwdmaxage', 'pwdexpirewarning']);
$this->connection->writeToCache($cacheKey, $result);
}

if (is_null($result) || !is_array($result) || empty($result[0]) || !is_array($result[0])) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure it is null and not false?
I’m pretty sure it can never be null.

Also, if you do not have ppolicy you should leave "Default password policy DN" empty and this code will never run.

@blizzz blizzz mentioned this pull request Feb 1, 2023
@bash2121
Copy link

Hello,
I have this bug and i have resolv this issue with your help. Thank you.
All works for existing account.
But now, when i create new account in my ldap, i have this error

Exception: array_key_exists(): Argument #2 ($array) must be of type array, null given in file '/var/www/html/nextcloud/do.do.fr/apps/user_ldap/lib/User/User.php' line 653

And i request error when i try login.
Can you help me please.

@Adambean
Copy link
Author

Hello, I have this bug and i have resolv this issue with your help. Thank you. All works for existing account. But now, when i create new account in my ldap, i have this error

Exception: array_key_exists(): Argument #2 ($array) must be of type array, null given in file '/var/www/html/nextcloud/do.do.fr/apps/user_ldap/lib/User/User.php' line 653

And i request error when i try login. Can you help me please.

You already asked that in the issue. Your comment isn't directly related to this pull request.

@skjnldsv skjnldsv mentioned this pull request Feb 23, 2023
@blizzz blizzz mentioned this pull request Mar 7, 2023
@blizzz blizzz modified the milestones: Nextcloud 26, Nextcloud 27 Mar 9, 2023
This was referenced May 3, 2023
@blizzz blizzz mentioned this pull request May 17, 2023
@blizzz blizzz modified the milestones: Nextcloud 27, Nextcloud 28 May 23, 2023
@skjnldsv skjnldsv mentioned this pull request Nov 1, 2023
This was referenced Nov 6, 2023
This was referenced Nov 14, 2023
@blizzz blizzz modified the milestones: Nextcloud 28, Nextcloud 29 Nov 23, 2023
@skjnldsv
Copy link
Member

As there is no feedback since a while I will close this ticket. If this is still happening please make sure to upgrade to the latest version. After that, feel free to reopen.

@skjnldsv skjnldsv closed this Feb 24, 2024
@skjnldsv skjnldsv removed the 3. to review Waiting for reviews label Feb 24, 2024
@skjnldsv skjnldsv added 3. to review Waiting for reviews feature: ldap bug and removed 3. to review Waiting for reviews labels Feb 24, 2024
@skjnldsv skjnldsv removed this from the Nextcloud 29 milestone Aug 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants