From: Felipe Pena Date: Sun, 30 Mar 2008 12:27:37 +0000 (+0000) Subject: MFB: Fixed bug #44564 (escapeshellarg removes UTF-8 multi-byte characters) X-Git-Tag: RELEASE_2_0_0b1~531 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=223b7349a04ba7ba6b3fab10feeebeda3ee31e7c;p=php MFB: Fixed bug #44564 (escapeshellarg removes UTF-8 multi-byte characters) --- diff --git a/ext/standard/exec.c b/ext/standard/exec.c index c20fc6f9e2..4bb59bde38 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -265,6 +265,8 @@ PHPAPI 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; } @@ -353,6 +355,8 @@ PHPAPI 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Ŋł€'"