Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2013-11-26 17:13:33 +0400
committerThomas Müller <thomas.mueller@tmit.eu>2013-11-26 17:13:33 +0400
commit2a93720f3f967775f7e5279b99348f8e4346e951 (patch)
tree603861b0237df9d2f7ba1bcf72be6c3a01a6ffb0 /lib/private/request.php
parentdc67c7efa9ff20f8b4466e5b6490405439d4a90f (diff)
fixes #6050
Diffstat (limited to 'lib/private/request.php')
-rwxr-xr-xlib/private/request.php29
1 files changed, 21 insertions, 8 deletions
diff --git a/lib/private/request.php b/lib/private/request.php
index 7a75bf25208..bb3a05ba97d 100755
--- a/lib/private/request.php
+++ b/lib/private/request.php
@@ -142,17 +142,30 @@ class OC_Request {
$requestUri = '/' . ltrim($requestUri, '/');
}
+ // Remove the query string from REQUEST_URI
+ if ($pos = strpos($requestUri, '?')) {
+ $requestUri = substr($requestUri, 0, $pos);
+ }
+
$scriptName = $_SERVER['SCRIPT_NAME'];
- // in case uri and script name don't match we better throw an exception
- if (strpos($requestUri, $scriptName) !== 0) {
- throw new Exception("REQUEST_URI($requestUri) does not start with the SCRIPT_NAME($scriptName)");
+ $path_info = $requestUri;
+
+ // strip off the script name's dir and file name
+ list($path, $name) = \Sabre_DAV_URLUtil::splitPath($scriptName);
+ if (!empty($path)) {
+ if( $path === $path_info || strpos($path_info, $path.'/') === 0) {
+ $path_info = substr($path_info, strlen($path));
+ } else {
+ throw new Exception("The requested uri($requestUri) cannot be processed by the script '$scriptName')");
+ }
}
- $path_info = substr($requestUri, strlen($scriptName));
- // Remove the query string from REQUEST_URI
- if ($pos = strpos($path_info, '?')) {
- $path_info = substr($path_info, 0, $pos);
+ if (strpos($path_info, '/'.$name.'/') === 0) {
+ $path_info = substr($path_info, strlen($name) + 1);
}
- return $path_info;
+ if (strpos($path_info, $name) === 0) {
+ $path_info = substr($path_info, strlen($name));
+ }
+ return rtrim($path_info, '/');
}
/**