From 223b7349a04ba7ba6b3fab10feeebeda3ee31e7c Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Sun, 30 Mar 2008 12:27:37 +0000 Subject: [PATCH] MFB: Fixed bug #44564 (escapeshellarg removes UTF-8 multi-byte characters) --- ext/standard/exec.c | 4 ++++ sapi/cli/tests/bug44564.phpt | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 sapi/cli/tests/bug44564.phpt 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Ŋł€'" -- 2.40.0