mirror of
https://github.com/php/php-src.git
synced 2024-09-22 10:27:25 +00:00
MFH: Add test for escapeshellcmd and restore previous behaviour with stripping % on Windows.
This commit is contained in:
parent
2c54b3abb5
commit
d8d69652dd
@ -299,6 +299,11 @@ PHPAPI char *php_escape_shell_cmd(char *str)
|
||||
}
|
||||
cmd[y++] = str[x];
|
||||
break;
|
||||
#else
|
||||
/* This is Windows specific for enviromental variables */
|
||||
case '%':
|
||||
cmd[y++] = '';
|
||||
break;
|
||||
#endif
|
||||
case '#': /* This is character-set independent */
|
||||
case '&':
|
||||
@ -322,8 +327,6 @@ PHPAPI char *php_escape_shell_cmd(char *str)
|
||||
case '\x0A': /* excluding these two */
|
||||
case '\xFF':
|
||||
#ifdef PHP_WIN32
|
||||
/* This is Windows specific for enviromental variables */
|
||||
case '%':
|
||||
cmd[y++] = '^';
|
||||
#else
|
||||
cmd[y++] = '\\';
|
||||
|
@ -0,0 +1,46 @@
|
||||
--TEST--
|
||||
Test escapeshellcmd() functionality on Windows
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if( substr(PHP_OS, 0, 3) != 'WIN' ) {
|
||||
die('skip...Valid for Windows only');
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
echo "*** Testing escapeshellcmd() basic operations ***\n";
|
||||
$data = array(
|
||||
'"abc',
|
||||
"'abc",
|
||||
'?<>',
|
||||
'()[]{}$',
|
||||
'%^',
|
||||
'#&;`|*?',
|
||||
'~<>\\'
|
||||
);
|
||||
|
||||
$count = 1;
|
||||
foreach ($data AS $value) {
|
||||
echo "-- Test " . $count++ . " --\n";
|
||||
var_dump(escapeshellcmd($value));
|
||||
}
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing escapeshellcmd() basic operations ***
|
||||
-- Test 1 --
|
||||
string(5) "^"abc"
|
||||
-- Test 2 --
|
||||
string(5) "^'abc"
|
||||
-- Test 3 --
|
||||
string(6) "^?^<^>"
|
||||
-- Test 4 --
|
||||
string(14) "^(^)^[^]^{^}^$"
|
||||
-- Test 5 --
|
||||
string(2) "^^"
|
||||
-- Test 6 --
|
||||
string(14) "^#^&^;^`^|^*^?"
|
||||
-- Test 7 --
|
||||
string(8) "^~^<^>^\"
|
||||
Done
|
Loading…
Reference in New Issue
Block a user