function PharExtensionInterceptor::baseFileContainsPharExtension
Same name in this branch
- 7.x misc/typo3/phar-stream-wrapper/src/Interceptor/PharExtensionInterceptor.php \TYPO3\PharStreamWrapper\Interceptor\PharExtensionInterceptor::baseFileContainsPharExtension()
Same name in other branches
- 9 core/lib/Drupal/Core/Security/PharExtensionInterceptor.php \Drupal\Core\Security\PharExtensionInterceptor::baseFileContainsPharExtension()
- 8.9.x core/lib/Drupal/Core/Security/PharExtensionInterceptor.php \Drupal\Core\Security\PharExtensionInterceptor::baseFileContainsPharExtension()
Determines if a path has a .phar extension or invoked execution.
Parameters
string $path: The path of the phar file to check.
Return value
bool TRUE if the file has a .phar extension or if the execution has been invoked by the phar file.
1 call to PharExtensionInterceptor::baseFileContainsPharExtension()
- PharExtensionInterceptor::assert in misc/
typo3/ drupal-security/ PharExtensionInterceptor.php - Determines whether phar file is allowed to execute.
File
-
misc/
typo3/ drupal-security/ PharExtensionInterceptor.php, line 57
Class
- PharExtensionInterceptor
- An alternate PharExtensionInterceptor to support phar-based CLI tools.
Namespace
Drupal\Core\SecurityCode
private function baseFileContainsPharExtension($path) {
$baseFile = Helper::determineBaseFile($path);
if ($baseFile === NULL) {
return FALSE;
}
// If the stream wrapper is registered by invoking a phar file that does
// not not have .phar extension then this should be allowed. For
// example, some CLI tools recommend removing the extension.
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
// Find the last entry in the backtrace containing a 'file' key as
// sometimes the last caller is executed outside the scope of a file. For
// example, this occurs with shutdown functions.
do {
$caller = array_pop($backtrace);
} while (empty($caller['file']) && !empty($backtrace));
if (isset($caller['file']) && $baseFile === Helper::determineBaseFile($caller['file'])) {
return TRUE;
}
$fileExtension = pathinfo($baseFile, PATHINFO_EXTENSION);
return strtolower($fileExtension) === 'phar';
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.