Executable Finder will now try to match if a file is already in the open_basedir list before searching it thru that list

This commit is contained in:
Florin Patan 2011-06-14 13:36:01 -04:00
parent a12ea12fc1
commit b552354414

View File

@ -41,7 +41,23 @@ class ExecutableFinder
*/
public function find($name, $default = null)
{
$dirs = explode(PATH_SEPARATOR, ini_get('open_basedir') ? ini_get('open_basedir') : (getenv('PATH') ? getenv('PATH') : getenv('Path')));
if (ini_get('open_basedir')) {
$searchPath = explode(PATH_SEPARATOR, getenv('open_basedir'));
$dirs = array();
foreach($searchPath as $path) {
if (is_dir($path)) {
$dirs[] = $path;
} else {
$file = str_replace(dirname($path), '', $path);
if($path == $name && is_executable($path)) {
return $path;
}
}
}
} else {
$dirs = explode(PATH_SEPARATOR, getenv('PATH') ? getenv('PATH') : getenv('Path'));
}
$suffixes = DIRECTORY_SEPARATOR == '\\' ? (getenv('PATHEXT') ? explode(PATH_SEPARATOR, getenv('PATHEXT')) : $this->suffixes) : array('');
foreach ($suffixes as $suffix) {
foreach ($dirs as $dir) {