From: Felipe Pena Date: Sun, 30 Mar 2008 12:17:39 +0000 (+0000) Subject: Fixed bug #44564 (escapeshellarg removes UTF-8 multi-byte characters) X-Git-Tag: php-5.2.6RC4~8 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3e663ebfef31a5bfb9d2f80fba3a8b81930a4283;p=php Fixed bug #44564 (escapeshellarg removes UTF-8 multi-byte characters) --- diff --git a/ext/standard/exec.c b/ext/standard/exec.c index 2c38a1a34a..2906f87d1d 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -279,6 +279,8 @@ char *php_escape_shell_cmd(char *str) { if (mb_len < 0) { continue; } else if (mb_len > 1) { + memcpy(cmd + y, str + x, mb_len); + y += mb_len; x += mb_len - 1; continue; } @@ -361,6 +363,8 @@ char *php_escape_shell_arg(char *str) { if (mb_len < 0) { continue; } else if (mb_len > 1) { + memcpy(cmd + y, str + x, mb_len); + y += mb_len; x += mb_len - 1; continue; } diff --git a/sapi/cli/tests/bug44564.phpt b/sapi/cli/tests/bug44564.phpt new file mode 100644 index 0000000000..da05bbbb15 --- /dev/null +++ b/sapi/cli/tests/bug44564.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #44564 (escapeshellarg removes UTF-8 multi-byte characters) +--FILE-- +')); +var_dump(escapeshellarg('f~|;*Þ?')); +var_dump(escapeshellcmd('?€®đæ?')); +var_dump(escapeshellarg('aŊł€')); + +?> +--EXPECT-- +string(13) "f\{o\}\<€\>" +string(10) "'f~|;*Þ?'" +string(13) "\?€®đæ\?" +string(10) "'aŊł€'"