From 91c6c451f417c4924eb53998b8388ca5531aa966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Pablo=20Villafa=C3=B1ez?= Date: Wed, 20 Jul 2016 14:22:04 +0200 Subject: [PATCH] Fix file permissions for SMB (read-only folders will be writeable) (#25301) * Fix file permissions for SMB (read-only folders will be writeable) * Read-only folders won't be deletable * Added comment for the read-only behaviour for folders --- apps/files_external/lib/Lib/Storage/SMB.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/apps/files_external/lib/Lib/Storage/SMB.php b/apps/files_external/lib/Lib/Storage/SMB.php index 50ea186060..28445dd2f6 100644 --- a/apps/files_external/lib/Lib/Storage/SMB.php +++ b/apps/files_external/lib/Lib/Storage/SMB.php @@ -395,6 +395,19 @@ class SMB extends Common implements INotifyStorage { } public function isUpdatable($path) { + try { + $info = $this->getFileInfo($path); + // following windows behaviour for read-only folders: they can be written into + // (https://support.microsoft.com/en-us/kb/326549 - "cause" section) + return !$info->isHidden() && (!$info->isReadOnly() || $this->is_dir($path)); + } catch (NotFoundException $e) { + return false; + } catch (ForbiddenException $e) { + return false; + } + } + + public function isDeletable($path) { try { $info = $this->getFileInfo($path); return !$info->isHidden() && !$info->isReadOnly();