diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2018-03-08 21:58:11 +0100 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2018-03-27 16:23:06 +0200 |
commit | 53447ae2b2066d751b2a998c3ed0a2692c72f6c4 (patch) | |
tree | caf811dbcf1b7ea8900f2e6d8a72b65148039b5b | |
parent | 709589f2dbe3ce49f3bd71e1531e723353ee631d (diff) | |
download | nextcloud-server-53447ae2b2066d751b2a998c3ed0a2692c72f6c4.tar.gz nextcloud-server-53447ae2b2066d751b2a998c3ed0a2692c72f6c4.zip |
Throw an exception if file_put_contents fails
* This will help with AppData hardening etc
* Introduced a GenericFileException for if nothing else is appropiate
- Maybe the other File exceptions should base on this?
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
-rw-r--r-- | lib/private/Files/Node/File.php | 6 | ||||
-rw-r--r-- | lib/public/Files/File.php | 2 | ||||
-rw-r--r-- | lib/public/Files/GenericFileException.php | 33 |
3 files changed, 39 insertions, 2 deletions
diff --git a/lib/private/Files/Node/File.php b/lib/private/Files/Node/File.php index 4bfa5d583f7..2ddbac97dce 100644 --- a/lib/private/Files/Node/File.php +++ b/lib/private/Files/Node/File.php @@ -26,6 +26,7 @@ namespace OC\Files\Node; +use OCP\Files\GenericFileException; use OCP\Files\NotPermittedException; class File extends Node implements \OCP\Files\File { @@ -57,11 +58,14 @@ class File extends Node implements \OCP\Files\File { /** * @param string $data * @throws \OCP\Files\NotPermittedException + * @throws \OCP\Files\GenericFileException */ public function putContent($data) { if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) { $this->sendHooks(array('preWrite')); - $this->view->file_put_contents($this->path, $data); + if ($this->view->file_put_contents($this->path, $data) === false) { + throw new GenericFileException('file_put_contents failed'); + } $this->fileInfo = null; $this->sendHooks(array('postWrite')); } else { diff --git a/lib/public/Files/File.php b/lib/public/Files/File.php index 8b57b3cfd87..0f052bc66ad 100644 --- a/lib/public/Files/File.php +++ b/lib/public/Files/File.php @@ -53,7 +53,7 @@ interface File extends Node { * * @param string $data * @throws \OCP\Files\NotPermittedException - * @return void + * @throws \OCP\Files\GenericFileException * @since 6.0.0 */ public function putContent($data); diff --git a/lib/public/Files/GenericFileException.php b/lib/public/Files/GenericFileException.php new file mode 100644 index 00000000000..b5da4aabebd --- /dev/null +++ b/lib/public/Files/GenericFileException.php @@ -0,0 +1,33 @@ +<?php +/** + * @copyright 2018, Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +namespace OCP\Files; + +/** + * Class GenericFileException + * + * @package OCP\Files + * @since 14.0.0 + */ +class GenericFileException extends \Exception { + +} |