diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2017-07-31 22:46:19 +0200 |
---|---|---|
committer | Daniel Calviño Sánchez <danxuliu@gmail.com> | 2017-12-15 14:46:36 +0100 |
commit | 8c5d656f3b605a8cedbf412b7498b936e12866e6 (patch) | |
tree | f6d87ef4c5d7240ec03107856428e5c452be1a82 /apps/dav/lib/Connector/Sabre/Node.php | |
parent | b19b1379699cf7790a13575f27a05b2f6db14f6a (diff) | |
download | nextcloud-server-8c5d656f3b605a8cedbf412b7498b936e12866e6.tar.gz nextcloud-server-8c5d656f3b605a8cedbf412b7498b936e12866e6.zip |
Handle OC-Total-Length in new chunking
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Diffstat (limited to 'apps/dav/lib/Connector/Sabre/Node.php')
-rw-r--r-- | apps/dav/lib/Connector/Sabre/Node.php | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/apps/dav/lib/Connector/Sabre/Node.php b/apps/dav/lib/Connector/Sabre/Node.php index 979336d86fe..b8a8209129c 100644 --- a/apps/dav/lib/Connector/Sabre/Node.php +++ b/apps/dav/lib/Connector/Sabre/Node.php @@ -165,6 +165,7 @@ abstract class Node implements \Sabre\DAV\INode { * Even if the modification time is set to a custom value the access time is set to now. */ public function touch($mtime) { + $mtime = $this->sanitizeMtime($mtime); $this->fileView->touch($this->path, $mtime); $this->refreshInfo(); } @@ -358,4 +359,17 @@ abstract class Node implements \Sabre\DAV\INode { public function getFileInfo() { return $this->info; } + + protected function sanitizeMtime($mtimeFromRequest) { + // In PHP 5.X "is_numeric" returns true for strings in hexadecimal + // notation. This is no longer the case in PHP 7.X, so this check + // ensures that strings with hexadecimal notations fail too in PHP 5.X. + $isHexadecimal = is_string($mtimeFromRequest) && preg_match('/^\s*0[xX]/', $mtimeFromRequest); + if ($isHexadecimal || !is_numeric($mtimeFromRequest)) { + throw new \InvalidArgumentException('X-OC-MTime header must be an integer (unix timestamp).'); + } + + return intval($mtimeFromRequest); + } + } |