Switch makePathSafe to use native realpath()
This commit is contained in:
		
							parent
							
								
									1d03eee56e
								
							
						
					
					
						commit
						7b4b4306a6
					
				| 
						 | 
					@ -5,16 +5,18 @@ require '../header.php';
 | 
				
			||||||
require_login();
 | 
					require_login();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ( isset($_REQUEST['comic']) ) {
 | 
					if ( isset($_REQUEST['comic']) ) {
 | 
				
			||||||
   $comic = makePathSafe(base64_decode(urldecode(($_REQUEST['comic']))));
 | 
					   $comicfull = realpath(COMICSDIR . base64_decode(urldecode($_REQUEST['comic'])));
 | 
				
			||||||
   $comicfull = COMICSDIR . $comic;
 | 
					   if ( $comicfull === false ) exit();
 | 
				
			||||||
 | 
					   if ( substr($comicfull, 0, strlen(COMICSDIR)) != COMICSDIR ) exit();
 | 
				
			||||||
 | 
					   $comic = substr($comicfull, strlen(COMICSDIR));
 | 
				
			||||||
   $comicoutputurl = "comics" . str_replace("#", "", $comic) . "/";
 | 
					   $comicoutputurl = "comics" . str_replace("#", "", $comic) . "/";
 | 
				
			||||||
   $comicoutputfull = "../" . EXTRACTSDIR . str_replace("#", "", $comic) . "/";
 | 
					   $comicoutputfull = "../" . EXTRACTSDIR . str_replace("#", "", $comic) . "/";
 | 
				
			||||||
} else {
 | 
					} else {
 | 
				
			||||||
   exit();
 | 
					   exit();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$ext = strtolower(substr($comic, -3));
 | 
					$ext = strtolower(substr($comicfull, -3));
 | 
				
			||||||
$_SESSION['comfile'] = basename($comic);
 | 
					$_SESSION['comfile'] = basename($comicfull);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$data = array();
 | 
					$data = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,8 +5,9 @@ require 'header.php';
 | 
				
			||||||
require_login();
 | 
					require_login();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ( isset($_REQUEST['comic']) ) {
 | 
					if ( isset($_REQUEST['comic']) ) {
 | 
				
			||||||
   $comic = makePathSafe(base64_decode(urldecode(($_REQUEST['comic']))));
 | 
					   $comicfull = realpath(COMICSDIR . base64_decode(urldecode($_REQUEST['comic'])));
 | 
				
			||||||
   $comicfull = COMICSDIR . $comic;
 | 
					   if ( $comicfull === false ) exit();
 | 
				
			||||||
 | 
					   if ( substr($comicfull, 0, strlen(COMICSDIR)) != COMICSDIR ) exit();
 | 
				
			||||||
} else {
 | 
					} else {
 | 
				
			||||||
   exit();
 | 
					   exit();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,30 +5,6 @@ function microtime_float() {
 | 
				
			||||||
   return ((float)$usec + (float)$sec);
 | 
					   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 = "") {
 | 
					function makeThumb($item = "") {
 | 
				
			||||||
   if ( $item == "" ) { return false; }
 | 
					   if ( $item == "" ) { return false; }
 | 
				
			||||||
   if ( is_dir($item) ) {
 | 
					   if ( is_dir($item) ) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user