Merge pull request #60239 from nextcloud/backport/59654/stable32

[stable32] fix: Fix permission issue when uploading a chunked file
This commit is contained in:
David Dreschner 2026-05-15 12:29:09 +02:00 committed by GitHub
commit d27f3c7ee6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 3 deletions

View file

@ -6,7 +6,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
use OC\Files\Filesystem;
use OC\Files\Storage\Wrapper\PermissionsMask;
use OC\Files\Storage\Wrapper\DirPermissionsMask;
use OC\Files\View;
use OCA\DAV\Connector\Sabre\PublicAuth;
use OCA\DAV\Connector\Sabre\ServerFactory;
@ -111,7 +111,11 @@ $server = $serverFactory->createServer(true, $baseuri, $requestUri, $authPlugin,
$mask |= Constants::PERMISSION_READ | Constants::PERMISSION_DELETE;
}
return new PermissionsMask(['storage' => $storage, 'mask' => $mask]);
return new DirPermissionsMask([
'storage' => $storage,
'mask' => $mask,
'path' => 'files',
]);
});
/** @psalm-suppress MissingClosureParamType */

View file

@ -88,7 +88,15 @@ class DirPermissionsMask extends PermissionsMask {
}
public function rename($source, $target): bool {
if (!$this->isUpdatable($source)) {
$isPartialUploadFile = dirname($source) === dirname($target)
&& strpos($source, '.ocTransferId') > 0;
if (
!($isPartialUploadFile
|| $this->isUpdatable($source)
|| $this->isDeletable($source)
)
) {
return false;
}