diff --git a/lib/base.php b/lib/base.php index 0730e5ff3a95df74761c807229c78789629b8453..2cbce82677d5c0339230747d89657062797224d2 100644 --- a/lib/base.php +++ b/lib/base.php @@ -362,6 +362,7 @@ class OC{ // Check for blacklisted files OC_Hook::connect('OC_Filesystem','write','OC_Filesystem','isBlacklisted'); + OC_Hook::connect('OC_Filesystem', 'rename', 'OC_Filesystem', 'isBlacklisted'); //make sure temporary files are cleaned up register_shutdown_function(array('OC_Helper','cleanTmp')); diff --git a/lib/filesystem.php b/lib/filesystem.php index 47626c05ae28db6ac0bd821f8b1a85f76d4e739c..e9d2ae9337210c52dddfd7beb5f78ff6ce56cd59 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -363,13 +363,21 @@ class OC_Filesystem{ /** * checks if a file is blacklsited for storage in the filesystem + * Listens to write and rename hooks * @param array $data from hook */ static public function isBlacklisted($data){ $blacklist = array('.htaccess'); - $filename = strtolower(basename($data['path'])); - if(in_array($filename,$blacklist)){ - $data['run'] = false; + if (isset($data['path'])) { + $path = $data['path']; + } else if (isset($data['newpath'])) { + $path = $data['newpath']; + } + if (isset($path)) { + $filename = strtolower(basename($path)); + if (in_array($filename, $blacklist)) { + $data['run'] = false; + } } }