diff options
author | Claus-Justus Heine <himself@claus-justus-heine.de> | 2022-02-03 09:59:28 +0100 |
---|---|---|
committer | Claus-Justus Heine <himself@claus-justus-heine.de> | 2022-02-03 10:05:49 +0100 |
commit | a355410b88d1e36672795df46e7d3c7f703a47aa (patch) | |
tree | ec0c2fb0ed211b3db0000a01b1f4d4989b3b2064 /lib/private | |
parent | e167d7f44ce9adb43b021e83b8782d3413081e45 (diff) | |
download | nextcloud-server-a355410b88d1e36672795df46e7d3c7f703a47aa.tar.gz nextcloud-server-a355410b88d1e36672795df46e7d3c7f703a47aa.zip |
Use the unjailed-path in OC_Helper::getStorageInfo() for files located in SharedStorage.
The current implementation already switches the storage-backend to
$storage->getSourceStorage(). However, it then calls
$rootInfo->getInternalPath() which returns the internal path relative to
the storage where the share is mounted. This is wrong, we need also to
unjail the path. Compare, e.g., with
OCA\Files_Sharing\SharedStorage::file_get/put_contents() for the
"logic".
Signed-off-by: Claus-Justus Heine <himself@claus-justus-heine.de>
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/legacy/OC_Helper.php | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/private/legacy/OC_Helper.php b/lib/private/legacy/OC_Helper.php index 52c49f1d795..efb9252e346 100644 --- a/lib/private/legacy/OC_Helper.php +++ b/lib/private/legacy/OC_Helper.php @@ -506,6 +506,9 @@ class OC_Helper { if ($storage->instanceOfStorage('\OCA\Files_Sharing\SharedStorage')) { $includeExtStorage = false; $sourceStorage = $storage->getSourceStorage(); + $internalPath = $storage->getUnjailedPath($rootInfo->getInternalPath()); + } else { + $internalPath = $rootInfo->getInternalPath(); } if ($includeExtStorage) { if ($storage->instanceOfStorage('\OC\Files\Storage\Home') @@ -528,7 +531,7 @@ class OC_Helper { /** @var \OC\Files\Storage\Wrapper\Quota $storage */ $quota = $sourceStorage->getQuota(); } - $free = $sourceStorage->free_space($rootInfo->getInternalPath()); + $free = $sourceStorage->free_space($internalPath); if ($free >= 0) { $total = $free + $used; } else { |