diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index 65a317495b..868e84409a 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -4851,6 +4851,7 @@ + $data 'OCP\Share::postAcceptShare' diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 9df544bb62..1fb3bcdc36 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -1008,7 +1008,8 @@ class Manager implements IManager { // The new password is not set again if it is the same as the old // one. $plainTextPassword = $share->getPassword(); - if (!empty($plainTextPassword) && !$this->updateSharePasswordIfNeeded($share, $originalShare)) { + $updatedPassword = $this->updateSharePasswordIfNeeded($share, $originalShare); + if (!empty($plainTextPassword) && !$updatedPassword) { $plainTextPassword = null; } if (empty($plainTextPassword) && !$originalShare->getSendPasswordByTalk() && $share->getSendPasswordByTalk()) { @@ -1116,9 +1117,13 @@ class Manager implements IManager { $this->verifyPassword($share->getPassword()); // If a password is set. Hash it! - if ($share->getPassword() !== null) { + if (!empty($share->getPassword())) { $share->setPassword($this->hasher->hash($share->getPassword())); + return true; + } else { + // Empty string and null are seen as NOT password protected + $share->setPassword(null); return true; } } else { diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index c70887ec87..33d960efb0 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -3515,7 +3515,7 @@ class ManagerTest extends \Test\TestCase { $manager->expects($this->once())->method('canShare')->willReturn(true); $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare); $manager->expects($this->once())->method('generalCreateChecks')->with($share); - $manager->expects($this->never())->method('verifyPassword'); + $manager->expects($this->once())->method('verifyPassword'); $manager->expects($this->never())->method('pathCreateChecks'); $manager->expects($this->never())->method('linkCreateChecks'); $manager->expects($this->never())->method('validateExpirationDateLink'); @@ -3587,7 +3587,7 @@ class ManagerTest extends \Test\TestCase { $manager->expects($this->once())->method('canShare')->willReturn(true); $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare); $manager->expects($this->once())->method('generalCreateChecks')->with($share); - $manager->expects($this->never())->method('verifyPassword'); + $manager->expects($this->once())->method('verifyPassword'); $manager->expects($this->never())->method('pathCreateChecks'); $manager->expects($this->never())->method('linkCreateChecks'); $manager->expects($this->never())->method('validateExpirationDateLink');