mirror of
https://github.com/php/php-src.git
synced 2025-08-16 14:08:47 +02:00
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4: Add NULL byte protection to exec, system and passthru
This commit is contained in:
commit
3ea76a768c
2 changed files with 29 additions and 0 deletions
|
@ -188,6 +188,10 @@ static void php_exec_ex(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ */
|
|||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot execute a blank command");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
if (strlen(cmd) != cmd_len) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "NULL byte detected. Possible attack");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (!ret_array) {
|
||||
ret = php_exec(mode, cmd, NULL, return_value TSRMLS_CC);
|
||||
|
|
25
ext/standard/tests/misc/exec_basic1.phpt
Normal file
25
ext/standard/tests/misc/exec_basic1.phpt
Normal file
|
@ -0,0 +1,25 @@
|
|||
--TEST--
|
||||
exec, system, passthru — Basic command execution functions
|
||||
--SKIPIF--
|
||||
<?php
|
||||
// If this does not work for Windows, please uncomment or fix test
|
||||
// if(substr(PHP_OS, 0, 3) == "WIN") die("skip not for Windows");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$cmd = "echo abc\n\0command";
|
||||
var_dump(exec($cmd, $output));
|
||||
var_dump($output);
|
||||
var_dump(system($cmd));
|
||||
var_dump(passthru($cmd));
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: exec(): NULL byte detected. Possible attack in %s on line %d
|
||||
bool(false)
|
||||
NULL
|
||||
|
||||
Warning: system(): NULL byte detected. Possible attack in %s on line %d
|
||||
bool(false)
|
||||
|
||||
Warning: passthru(): NULL byte detected. Possible attack in %s on line %d
|
||||
bool(false)
|
Loading…
Add table
Add a link
Reference in a new issue