Switch makePathSafe to use native realpath()
This commit is contained in:
parent
1d03eee56e
commit
7b4b4306a6
|
@ -5,16 +5,18 @@ require '../header.php';
|
|||
require_login();
|
||||
|
||||
if ( isset($_REQUEST['comic']) ) {
|
||||
$comic = makePathSafe(base64_decode(urldecode(($_REQUEST['comic']))));
|
||||
$comicfull = COMICSDIR . $comic;
|
||||
$comicfull = realpath(COMICSDIR . base64_decode(urldecode($_REQUEST['comic'])));
|
||||
if ( $comicfull === false ) exit();
|
||||
if ( substr($comicfull, 0, strlen(COMICSDIR)) != COMICSDIR ) exit();
|
||||
$comic = substr($comicfull, strlen(COMICSDIR));
|
||||
$comicoutputurl = "comics" . str_replace("#", "", $comic) . "/";
|
||||
$comicoutputfull = "../" . EXTRACTSDIR . str_replace("#", "", $comic) . "/";
|
||||
} else {
|
||||
exit();
|
||||
}
|
||||
|
||||
$ext = strtolower(substr($comic, -3));
|
||||
$_SESSION['comfile'] = basename($comic);
|
||||
$ext = strtolower(substr($comicfull, -3));
|
||||
$_SESSION['comfile'] = basename($comicfull);
|
||||
|
||||
$data = array();
|
||||
|
||||
|
|
|
@ -5,8 +5,9 @@ require 'header.php';
|
|||
require_login();
|
||||
|
||||
if ( isset($_REQUEST['comic']) ) {
|
||||
$comic = makePathSafe(base64_decode(urldecode(($_REQUEST['comic']))));
|
||||
$comicfull = COMICSDIR . $comic;
|
||||
$comicfull = realpath(COMICSDIR . base64_decode(urldecode($_REQUEST['comic'])));
|
||||
if ( $comicfull === false ) exit();
|
||||
if ( substr($comicfull, 0, strlen(COMICSDIR)) != COMICSDIR ) exit();
|
||||
} else {
|
||||
exit();
|
||||
}
|
||||
|
|
|
@ -5,30 +5,6 @@ function microtime_float() {
|
|||
return ((float)$usec + (float)$sec);
|
||||
}
|
||||
|
||||
function makePathSafe($path = "") {
|
||||
if ( $path == "" ) return "";
|
||||
// Stick forward slashes on the ends to make matching more consistent
|
||||
$path = "/" . $path . "/";
|
||||
// Remove all instances of dots between forward slashes
|
||||
while ( preg_match("/\/\.{0,}\//", $path) ) {
|
||||
$path = preg_replace("/\/\.{0,}\//", "/", $path);
|
||||
}
|
||||
// Replace all instances of two consecutive forward slashes
|
||||
while ( strpos($path, "//") !== false ) {
|
||||
$path = str_replace("//", "/", $path);
|
||||
}
|
||||
// Remove all leading forward slashes
|
||||
while ( substr($path, 0, 1) == '/' ) {
|
||||
$path = substr($path, 1);
|
||||
}
|
||||
// Remove all trailing forward slashes
|
||||
while ( substr($path, -1) == '/' ) {
|
||||
$path = substr($path, 0, strlen($path)-1);
|
||||
}
|
||||
$path = "/" . $path;
|
||||
return $path;
|
||||
}
|
||||
|
||||
function makeThumb($item = "") {
|
||||
if ( $item == "" ) { return false; }
|
||||
if ( is_dir($item) ) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user