Skip to content

Commit

Permalink
Merge pull request #48378 from nextcloud/backport/48142/stable27
Browse files Browse the repository at this point in the history
[stable27] feat(share): ensure unique share tokens with dynamic length adjustment
  • Loading branch information
nickvergessen authored Sep 26, 2024
2 parents 6c473df + 6fa70fc commit 041c8e2
Showing 1 changed file with 17 additions and 5 deletions.
22 changes: 17 additions & 5 deletions lib/private/Share20/Manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -786,13 +786,25 @@ public function createShare(IShare $share) {
$this->linkCreateChecks($share);
$this->setLinkParent($share);

// For now ignore a set token.
$share->setToken(
$this->secureRandom->generate(
for ($i = 0; $i <= 3; $i++) {
$token = $this->secureRandom->generate(
\OC\Share\Constants::TOKEN_LENGTH,
\OCP\Security\ISecureRandom::CHAR_HUMAN_READABLE
)
);
);

try {
$this->getShareByToken($token);
} catch (\OCP\Share\Exceptions\ShareNotFound $e) {
// Set the unique token
$share->setToken($token);
break;
}

// Abort after 3 failed attempts
if ($i >= 3) {
throw new \Exception('Unable to generate a unique share token after 3 attempts.');
}
}

// Verify the expiration date
$share = $this->validateExpirationDateLink($share);
Expand Down

0 comments on commit 041c8e2

Please sign in to comment.