aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorVincent Petry <vincent@nextcloud.com>2022-02-10 09:50:21 +0100
committerVincent Petry <vincent@nextcloud.com>2022-02-10 09:50:21 +0100
commit7858fee5b53e640ed04b5ec54034c75e22124fd6 (patch)
tree497fbe21f58553616074a882b33ba10d8ed5cdff /apps
parente0dc82668fdad768346cf0cf752898ccd74fdf37 (diff)
downloadnextcloud-server-7858fee5b53e640ed04b5ec54034c75e22124fd6.tar.gz
nextcloud-server-7858fee5b53e640ed04b5ec54034c75e22124fd6.zip
Fix path handling when transferring incoming shares
When transferring incoming shares from a guest user without specifying a path, the $path is empty. The fix properly handles that situation to avoid looking for shares in a path with doubled slashes which failed to find shares to transfer. Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Diffstat (limited to 'apps')
-rw-r--r--apps/files/lib/Service/OwnershipTransferService.php6
1 files changed, 5 insertions, 1 deletions
diff --git a/apps/files/lib/Service/OwnershipTransferService.php b/apps/files/lib/Service/OwnershipTransferService.php
index 93a3a188399..670e6419d75 100644
--- a/apps/files/lib/Service/OwnershipTransferService.php
+++ b/apps/files/lib/Service/OwnershipTransferService.php
@@ -444,13 +444,17 @@ class OwnershipTransferService {
$output->writeln("Restoring incoming shares ...");
$progress = new ProgressBar($output, count($sourceShares));
$prefix = "$destinationUid/files";
+ $finalShareTarget = '';
if (substr($finalTarget, 0, strlen($prefix)) === $prefix) {
$finalShareTarget = substr($finalTarget, strlen($prefix));
}
foreach ($sourceShares as $share) {
try {
// Only restore if share is in given path.
- $pathToCheck = '/' . trim($path) . '/';
+ $pathToCheck = '/';
+ if (trim($path, '/') !== '') {
+ $pathToCheck = '/' . trim($path) . '/';
+ }
if (substr($share->getTarget(), 0, strlen($pathToCheck)) !== $pathToCheck) {
continue;
}