Permalink
Browse files

Merge pull request #2055 from chernjie/develop

Bug fix for relative directory removal
  • Loading branch information...
2 parents fd24adf + 0bf9cfa commit 3fd3345de27c7ccd7ed1efea1805d61a66171a53 @narfbg narfbg committed Dec 6, 2012
Showing with 26 additions and 1 deletion.
  1. +26 −1 system/core/URI.php
View
27 system/core/URI.php
@@ -219,7 +219,32 @@ protected function _parse_request_uri()
}
// Do some final cleaning of the URI and return it
- return str_replace(array('//', '../'), '/', trim($uri, '/'));
+ return $this->_remove_relative_directory($uri);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Remove relative directory (../) and multi slashes (///)
+ *
+ * Do some final cleaning of the URI and return it, currently only used in self::_parse_request_uri()
+ *
+ * @param string $url
+ * @return string
+ */
+ protected function _remove_relative_directory($uri)
+ {
+ $uris = array();
+ $tok = strtok($uri, '/');
+ while ($tok !== FALSE)
+ {
+ if (( ! empty($tok) OR $tok === '0') && $tok !== '..')
+ {
+ $uris[] = $tok;
+ }
+ $tok = strtok('/');
+ }
+ return implode('/', $uris);
}
// --------------------------------------------------------------------

0 comments on commit 3fd3345

Please sign in to comment.