From e3e8c437ba5619a62c25764466ff9828d2a06fa2 Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Sun, 17 Aug 2008 15:23:23 +0000 Subject: [PATCH] - [DOC] improve fix for #43261 for % and " --- ext/standard/exec.c | 6 ++++-- .../tests/general_functions/escapeshellcmd-win32.phpt | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ext/standard/exec.c b/ext/standard/exec.c index b22e6a3da9..fb3ab0770d 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -272,9 +272,9 @@ PHPAPI char *php_escape_shell_cmd(char *str) } switch (str[x]) { +#ifndef PHP_WIN32 case '"': case '\'': -#ifndef PHP_WIN32 if (!p && (p = memchr(str + x + 1, str[x], l - x - 1))) { /* noop */ } else if (p && *p == str[x]) { @@ -285,7 +285,9 @@ PHPAPI char *php_escape_shell_cmd(char *str) cmd[y++] = str[x]; break; #else - /* This is Windows specific for enviromental variables */ + /* % is Windows specific for enviromental variables, ^%PATH% will + output PATH whil ^%PATH^% not. escapeshellcmd will escape all %. + */ case '%': cmd[y++] = ' '; break; diff --git a/ext/standard/tests/general_functions/escapeshellcmd-win32.phpt b/ext/standard/tests/general_functions/escapeshellcmd-win32.phpt index 3da43e15f7..9fcb99188c 100644 --- a/ext/standard/tests/general_functions/escapeshellcmd-win32.phpt +++ b/ext/standard/tests/general_functions/escapeshellcmd-win32.phpt @@ -16,7 +16,8 @@ $data = array( '()[]{}$', '%^', '#&;`|*?', - '~<>\\' + '~<>\\', + '%NOENV%' ); $count = 1; @@ -38,9 +39,11 @@ string(6) "^?^<^>" -- Test 4 -- string(14) "^(^)^[^]^{^}^$" -- Test 5 -- -string(2) "^^" +string(4) "^%^^" -- Test 6 -- string(14) "^#^&^;^`^|^*^?" -- Test 7 -- string(8) "^~^<^>^\" +-- Test 8 -- +string(9) "^%NOENV^%" Done -- 2.50.1