From 845640892bf62e20a1e84ee3b6cf4ad84fd7dd23 Mon Sep 17 00:00:00 2001 From: Fabien Villepinte Date: Sat, 5 Oct 2019 14:26:33 +0200 Subject: [PATCH 1/5] Avoid file clash in root_check skipifs --- ext/standard/tests/dir/dir_variation3.phpt | 2 +- ext/standard/tests/dir/dir_variation7.phpt | 2 +- ext/standard/tests/dir/opendir_variation5.phpt | 2 +- ext/standard/tests/dir/opendir_variation7.phpt | 2 +- ext/standard/tests/dir/readdir_variation5.phpt | 2 +- ext/standard/tests/dir/scandir_variation5.phpt | 2 +- ext/standard/tests/dir/scandir_variation7.phpt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ext/standard/tests/dir/dir_variation3.phpt b/ext/standard/tests/dir/dir_variation3.phpt index 041304eba42c8..edf80a3c2884c 100644 --- a/ext/standard/tests/dir/dir_variation3.phpt +++ b/ext/standard/tests/dir/dir_variation3.phpt @@ -6,7 +6,7 @@ if( substr(PHP_OS, 0, 3) == 'WIN') { die('skip Not for Windows'); } // Skip if being run by root (files are always readable, writeable and executable) -$filename = __DIR__."/dir_root_check.tmp"; +$filename = __FILE__.".root_check.tmp"; $fp = fopen($filename, 'w'); fclose($fp); if(fileowner($filename) == 0) { diff --git a/ext/standard/tests/dir/dir_variation7.phpt b/ext/standard/tests/dir/dir_variation7.phpt index e069043fe33c9..945c6068f6c29 100644 --- a/ext/standard/tests/dir/dir_variation7.phpt +++ b/ext/standard/tests/dir/dir_variation7.phpt @@ -6,7 +6,7 @@ if( substr(PHP_OS, 0, 3) == 'WIN') { die('skip Not for Windows'); } // Skip if being run by root (files are always readable, writeable and executable) -$filename = __DIR__."/dir_root_check.tmp"; +$filename = __FILE__.".root_check.tmp"; $fp = fopen($filename, 'w'); fclose($fp); if(fileowner($filename) == 0) { diff --git a/ext/standard/tests/dir/opendir_variation5.phpt b/ext/standard/tests/dir/opendir_variation5.phpt index ac129302800ea..41bbca5ddab4b 100644 --- a/ext/standard/tests/dir/opendir_variation5.phpt +++ b/ext/standard/tests/dir/opendir_variation5.phpt @@ -6,7 +6,7 @@ if( substr(PHP_OS, 0, 3) == 'WIN') { die('skip Not for Windows'); } // Skip if being run by root (files are always readable, writeable and executable) -$filename = __DIR__."/dir_root_check.tmp"; +$filename = __FILE__.".root_check.tmp"; $fp = fopen($filename, 'w'); fclose($fp); if(fileowner($filename) == 0) { diff --git a/ext/standard/tests/dir/opendir_variation7.phpt b/ext/standard/tests/dir/opendir_variation7.phpt index d468f27008aef..a4eafe3400665 100644 --- a/ext/standard/tests/dir/opendir_variation7.phpt +++ b/ext/standard/tests/dir/opendir_variation7.phpt @@ -6,7 +6,7 @@ if( substr(PHP_OS, 0, 3) == 'WIN') { die('skip Not for Windows'); } // Skip if being run by root (files are always readable, writeable and executable) -$filename = __DIR__ . "/opendir_root_check.tmp"; +$filename = __FILE__ . ".root_check.tmp"; $fp = fopen($filename, 'w'); fclose($fp); if(fileowner($filename) == 0) { diff --git a/ext/standard/tests/dir/readdir_variation5.phpt b/ext/standard/tests/dir/readdir_variation5.phpt index 575a4000ac692..7432e049febeb 100644 --- a/ext/standard/tests/dir/readdir_variation5.phpt +++ b/ext/standard/tests/dir/readdir_variation5.phpt @@ -6,7 +6,7 @@ if( substr(PHP_OS, 0, 3) == 'WIN') { die('skip Not for Windows'); } // Skip if being run by root (files are always readable, writeable and executable) -$filename = __DIR__."/readdir_root_check.tmp"; +$filename = __FILE__.".root_check.tmp"; $fp = fopen($filename, 'w'); fclose($fp); if(fileowner($filename) == 0) { diff --git a/ext/standard/tests/dir/scandir_variation5.phpt b/ext/standard/tests/dir/scandir_variation5.phpt index 47539c493f62f..0558038fecc76 100644 --- a/ext/standard/tests/dir/scandir_variation5.phpt +++ b/ext/standard/tests/dir/scandir_variation5.phpt @@ -6,7 +6,7 @@ if( substr(PHP_OS, 0, 3) == 'WIN') { die('skip Not for Windows'); } // Skip if being run by root (files are always readable, writeable and executable) -$filename = __DIR__."/dir_root_check.tmp"; +$filename = __FILE__.".root_check.tmp"; $fp = fopen($filename, 'w'); fclose($fp); if(fileowner($filename) == 0) { diff --git a/ext/standard/tests/dir/scandir_variation7.phpt b/ext/standard/tests/dir/scandir_variation7.phpt index b0305a6e03741..66c2f62c91437 100644 --- a/ext/standard/tests/dir/scandir_variation7.phpt +++ b/ext/standard/tests/dir/scandir_variation7.phpt @@ -6,7 +6,7 @@ if( substr(PHP_OS, 0, 3) == 'WIN') { die('skip Not for Windows'); } // Skip if being run by root (files are always readable, writeable and executable) -$filename = __DIR__ . "/dir_root_check.tmp"; +$filename = __FILE__ . ".root_check.tmp"; $fp = fopen($filename, 'w'); fclose($fp); if(fileowner($filename) == 0) { From 55fc0e00ab56ee2caa7b9f83808adc5214ebc1c8 Mon Sep 17 00:00:00 2001 From: Fabien Villepinte Date: Sat, 5 Oct 2019 21:29:27 +0200 Subject: [PATCH 2/5] Fix more potential clashes --- ext/standard/tests/file/006_basic.phpt | 2 +- ext/standard/tests/file/006_variation1.phpt | 2 +- ext/standard/tests/file/is_writable_variation1.phpt | 2 +- ext/standard/tests/file/is_writable_variation3.phpt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ext/standard/tests/file/006_basic.phpt b/ext/standard/tests/file/006_basic.phpt index 553e8445f17b8..c1836d054dc1d 100644 --- a/ext/standard/tests/file/006_basic.phpt +++ b/ext/standard/tests/file/006_basic.phpt @@ -6,7 +6,7 @@ if (substr(PHP_OS, 0, 3) == 'WIN') { die('skip Not on Windows'); } // Skip if being run by root -$filename = __DIR__."/006_root_check.tmp"; +$filename = __FILE__.".root_check.tmp"; $fp = fopen($filename, 'w'); fclose($fp); if(fileowner($filename) == 0) { diff --git a/ext/standard/tests/file/006_variation1.phpt b/ext/standard/tests/file/006_variation1.phpt index 102bc28432d1f..835e03a4937bd 100644 --- a/ext/standard/tests/file/006_variation1.phpt +++ b/ext/standard/tests/file/006_variation1.phpt @@ -6,7 +6,7 @@ if (substr(PHP_OS, 0, 3) == 'WIN') { die('skip Not on Windows'); } // Skip if being run by root -$filename = __DIR__."/006_root_check.tmp"; +$filename = __FILE__.".root_check.tmp"; $fp = fopen($filename, 'w'); fclose($fp); if(fileowner($filename) == 0) { diff --git a/ext/standard/tests/file/is_writable_variation1.phpt b/ext/standard/tests/file/is_writable_variation1.phpt index 15f1290588ab2..4cb82e70033ed 100644 --- a/ext/standard/tests/file/is_writable_variation1.phpt +++ b/ext/standard/tests/file/is_writable_variation1.phpt @@ -5,7 +5,7 @@ Test is_writable() and its alias is_writeable() function: usage variations - dif if (substr(PHP_OS, 0, 3) != 'WIN') { // Skip if being run by root (files are always readable, writeable and executable) - $filename = __DIR__."/is_writable_root_check.tmp"; + $filename = __FILE__.".root_check.tmp"; $fp = fopen($filename, 'w'); fclose($fp); if(fileowner($filename) == 0) { diff --git a/ext/standard/tests/file/is_writable_variation3.phpt b/ext/standard/tests/file/is_writable_variation3.phpt index c8909b09328b0..b7105b823f6ff 100644 --- a/ext/standard/tests/file/is_writable_variation3.phpt +++ b/ext/standard/tests/file/is_writable_variation3.phpt @@ -4,7 +4,7 @@ Test is_writable() and its alias is_writeable() function: usage variations - inv Date: Sat, 5 Oct 2019 21:45:51 +0200 Subject: [PATCH 3/5] Uniformize root check in skipifs --- ext/sockets/tests/socket_create_listen-nobind.phpt | 4 ++-- ext/sockets/tests/socket_set_option_error_socket_option.phpt | 4 ++-- ext/standard/tests/file/006_error.phpt | 2 +- ext/standard/tests/file/006_variation2.phpt | 2 +- ext/standard/tests/file/copy_variation15.phpt | 2 +- ext/standard/tests/file/copy_variation9.phpt | 2 +- ext/standard/tests/file/is_executable_basic.phpt | 2 +- ext/standard/tests/file/is_executable_variation2.phpt | 2 +- ext/standard/tests/file/is_executable_variation3.phpt | 2 +- ext/standard/tests/file/is_readable_basic.phpt | 2 +- ext/standard/tests/file/is_readable_variation1.phpt | 2 +- ext/standard/tests/file/is_readable_variation2.phpt | 2 +- ext/standard/tests/file/is_readable_variation3.phpt | 2 +- ext/standard/tests/file/is_writable_basic.phpt | 2 +- ext/standard/tests/file/is_writable_variation2.phpt | 2 +- ext/standard/tests/file/lchown_error.phpt | 2 +- ext/standard/tests/file/mkdir_rmdir_variation1.phpt | 2 +- ext/standard/tests/file/mkdir_rmdir_variation2.phpt | 2 +- .../tests/file/symlink_link_linkinfo_is_link_variation6.phpt | 2 +- ext/standard/tests/file/tempnam_variation4-0.phpt | 2 +- ext/standard/tests/file/tempnam_variation4-1.phpt | 2 +- ext/standard/tests/file/unlink_variation1.phpt | 2 +- 22 files changed, 24 insertions(+), 24 deletions(-) diff --git a/ext/sockets/tests/socket_create_listen-nobind.phpt b/ext/sockets/tests/socket_create_listen-nobind.phpt index 81e7297339d01..a671375e4a85a 100644 --- a/ext/sockets/tests/socket_create_listen-nobind.phpt +++ b/ext/sockets/tests/socket_create_listen-nobind.phpt @@ -5,7 +5,7 @@ Test if socket_create_listen() returns false, when it cannot bind to the port. if (!extension_loaded('sockets')) { die('SKIP The sockets extension is not loaded.'); } -$filename = __DIR__ . '/006_root_check.tmp'; +$filename = __FILE__ . '.root_check.tmp'; $fp = fopen($filename, 'w'); fclose($fp); if (fileowner($filename) == 0) { @@ -22,7 +22,7 @@ $sock = socket_create_listen(80); Warning: socket_create_listen(): unable to bind to given address [13]: Permission denied in %s on line %d --CLEAN-- --CLEAN-- Date: Sun, 6 Oct 2019 19:10:44 +0200 Subject: [PATCH 4/5] Fix how to clean root check files --- ext/sockets/tests/socket_create_listen-nobind.phpt | 6 ++---- .../tests/socket_set_option_error_socket_option.phpt | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/ext/sockets/tests/socket_create_listen-nobind.phpt b/ext/sockets/tests/socket_create_listen-nobind.phpt index a671375e4a85a..d6a9a767a3276 100644 --- a/ext/sockets/tests/socket_create_listen-nobind.phpt +++ b/ext/sockets/tests/socket_create_listen-nobind.phpt @@ -9,9 +9,10 @@ $filename = __FILE__ . '.root_check.tmp'; $fp = fopen($filename, 'w'); fclose($fp); if (fileowner($filename) == 0) { - unlink ($filename); + unlink($filename); die('SKIP Test cannot be run as root.'); } +unlink($filename); if (@socket_create_listen(80)) { die('SKIP Test cannot be run in environment that will allow binding to port 80 (azure)'); } @@ -20,9 +21,6 @@ if (@socket_create_listen(80)) { $sock = socket_create_listen(80); --EXPECTF-- Warning: socket_create_listen(): unable to bind to given address [13]: Permission denied in %s on line %d ---CLEAN-- - --FILE-- ---CLEAN-- - Date: Mon, 7 Oct 2019 18:08:05 +0200 Subject: [PATCH 5/5] Extract root check into skipif_root.inc --- ext/standard/tests/dir/dir_variation3.phpt | 10 +--------- ext/standard/tests/dir/dir_variation7.phpt | 10 +--------- ext/standard/tests/dir/opendir_variation5.phpt | 10 +--------- ext/standard/tests/dir/opendir_variation7.phpt | 10 +--------- ext/standard/tests/dir/readdir_variation5.phpt | 10 +--------- ext/standard/tests/dir/scandir_variation5.phpt | 10 +--------- ext/standard/tests/dir/scandir_variation7.phpt | 10 +--------- ext/standard/tests/file/006_basic.phpt | 12 +----------- ext/standard/tests/file/006_error.phpt | 12 +----------- ext/standard/tests/file/006_variation1.phpt | 12 +----------- ext/standard/tests/file/006_variation2.phpt | 12 +----------- ext/standard/tests/file/copy_variation15.phpt | 10 +--------- ext/standard/tests/file/copy_variation9.phpt | 11 +---------- ext/standard/tests/file/is_executable_basic.phpt | 11 +---------- .../tests/file/is_executable_variation2.phpt | 11 +---------- .../tests/file/is_executable_variation3.phpt | 11 +---------- ext/standard/tests/file/is_readable_basic.phpt | 11 +---------- .../tests/file/is_readable_variation1.phpt | 12 +----------- .../tests/file/is_readable_variation2.phpt | 10 +--------- .../tests/file/is_readable_variation3.phpt | 13 +------------ ext/standard/tests/file/is_writable_basic.phpt | 11 +---------- .../tests/file/is_writable_variation1.phpt | 14 +------------- .../tests/file/is_writable_variation2.phpt | 11 +---------- .../tests/file/is_writable_variation3.phpt | 12 +----------- ext/standard/tests/file/lchown_error.phpt | 10 +--------- .../tests/file/mkdir_rmdir_variation1.phpt | 11 +---------- .../tests/file/mkdir_rmdir_variation2.phpt | 11 +---------- ...symlink_link_linkinfo_is_link_variation6.phpt | 12 +----------- .../tests/file/tempnam_variation4-0.phpt | 10 +--------- .../tests/file/tempnam_variation4-1.phpt | 10 +--------- ext/standard/tests/file/unlink_variation1.phpt | 11 +---------- ext/standard/tests/skipif_root.inc | 16 ++++++++++++++++ 32 files changed, 47 insertions(+), 310 deletions(-) create mode 100644 ext/standard/tests/skipif_root.inc diff --git a/ext/standard/tests/dir/dir_variation3.phpt b/ext/standard/tests/dir/dir_variation3.phpt index edf80a3c2884c..b79b2befe4eca 100644 --- a/ext/standard/tests/dir/dir_variation3.phpt +++ b/ext/standard/tests/dir/dir_variation3.phpt @@ -5,15 +5,7 @@ Test dir() function : usage variations - different directory permissions if( substr(PHP_OS, 0, 3) == 'WIN') { die('skip Not for Windows'); } -// Skip if being run by root (files are always readable, writeable and executable) -$filename = __FILE__.".root_check.tmp"; -$fp = fopen($filename, 'w'); -fclose($fp); -if(fileowner($filename) == 0) { - unlink ($filename); - die('skip...cannot be run as root\n'); -} -unlink($filename); +require __DIR__ . '/../skipif_root.inc'; ?> --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE--