mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
7c8a3e426e
There's a test that tries to make /etc world-writable, and asserts that it fails. Although this test is guarded by a root user check, there are situations where you don't need to be root to be able to do this. This may thus have unwanted effects on your live filesystem. The simple solution is to remove that part of the test. It doesn't really add value anyway: we're trying to test the chmod error path, but that exact same error path can be reached with any failure condition that the kernel gives. For example, trying to chmod a non-existent file will trigger the same code path. While at it, also prefix the test path for the non-existent file such that we don't accidentally modify the filesystem. The chroot now has a better root-user check, that will not modify the filesystem. Other root-modifying mkdir tests were removed because they added no value either. Closes GH-13566.
39 lines
719 B
PHP
39 lines
719 B
PHP
--TEST--
|
|
chroot()
|
|
--SKIPIF--
|
|
<?php
|
|
if (!function_exists("chroot")) {
|
|
die("skip chroot() not available");
|
|
}
|
|
// Skip if not being run by root (files are always readable, writeable and executable)
|
|
$filename = @tempnam(__DIR__, 'root_check_');
|
|
if (!file_exists($filename)) {
|
|
die('WARN Unable to create the "root check" file');
|
|
}
|
|
|
|
$isRoot = fileowner($filename) == 0;
|
|
|
|
unlink($filename);
|
|
|
|
if (!$isRoot) {
|
|
die('SKIP Must be run as root');
|
|
}
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
mkdir("chroot_001_x");
|
|
var_dump(is_dir("chroot_001_x"));
|
|
var_dump(chroot("chroot_001_x"));
|
|
var_dump(is_dir("chroot_001_x"));
|
|
var_dump(realpath("."));
|
|
?>
|
|
--CLEAN--
|
|
<?php
|
|
rmdir("chroot_001_x");
|
|
?>
|
|
--EXPECT--
|
|
bool(true)
|
|
bool(true)
|
|
bool(false)
|
|
string(1) "/"
|